使用者模式同步之互斥體小解

2022-07-23 08:27:11 字數 520 閱讀 2490

1.互斥體(互斥體類似於同步事件)

互斥體可避免多個執行緒爭奪乙個資源的問題,多執行緒環境下,如果乙個執行緒獲得互斥體,不釋放的話其他的執行緒就獲得不了該資源

它與同步事件的區別:

是在同乙個執行緒內它可以遞迴獲得互斥體,也就是這個執行緒獲得互斥體後對再次去獲得認可不排斥,同步我們顯而易見的得知不允許這樣

他有激發未激發兩種狀態,記住!!!獲得互斥體是未激發狀態,釋放互斥體是激發狀態,他和訊號量區別清楚

同樣使用它首先要初始化;createmutex(security,bool(是否被占有),lpctstr(name)),獲得互斥體的函式是wait系列的等待函式

releasemutex是釋放互斥體

第二引數為false是沒有占有,是激發狀態,反之為未激發狀態

記住是在乙個互斥體被乙個執行緒獲得後必須釋放才能下乙個獲得和自旋鎖原理一樣

2. 對於等待函式的解釋

使用者模式同步之訊號量小解

3.訊號燈 重點是記住什麼樣是激發什麼樣稱為未激發 訊號燈有兩種狀態,激發和未激發狀態,訊號燈內部有個計數器,可以理解訊號燈內部有n個燈泡,如果有乙個燈泡亮著,表示訊號燈處於激發狀態,如果全部熄滅,訊號燈就是處於未激發狀態 同樣的訊號燈的使用也需要初始化它利用的是createsemaphore se...

執行緒同步 互斥體Mutex

mutex 互斥體物件。互斥的範圍 多程序範圍內的互斥,也可以用於同程序多執行緒的同步,如果應用場景是同一程序類的互斥,mutex就沒有使用的必要了,使用lock或monitor應該是比較好的選擇。因為mutex的獲取與生成比lock或monitor慢了不至乙個數量級。本地mutex 如果在構造mu...

執行緒同步互斥通訊問題之互斥

執行緒同步互斥通訊問題之互斥 使用wait 和notify 實現執行緒之間的通訊。要用到同步鎖 同一資料或者同一演算法的方法都盡量放在同乙個類中 程式的健壯性 高類聚 package martina.traditionalthread public class traditionalthreadco...