Linux completion機制

在Linux下用於防止競爭的機制包括:信號量,completion,自旋鎖。

completion,本質上是一個計數器,主要用於線程之間的同步。當線程調用wait_for_completion(及其類似函數)檢測該計數器爲0時,被阻塞,否則往下執行。當一個線程完成工作時,調用complete(_all),增加計數器的值,這樣可以喚醒阻塞的線程。注意,complete_all會將計數器設置爲一個很大的值(UINT_MAX/2),因此確定沒有線程被阻塞後,可以調用reinit_completion重置計數器。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章