執行緒學習筆記(2) 互斥物件

2021-03-31 14:37:33 字數 1362 閱讀 5349

執行緒學習筆記(2)-互斥物件

1)互斥物件的概念:

互斥物件是系統核心維護的一種資料結構,它定保證了物件對單個執行緒的訪問權.

互斥物件的結構:

包含了乙個使用數量,乙個執行緒id,乙個計數器使用數量是指有多少個執行緒在調

該物件,執行緒id是指互斥物件維護的執行緒的id.計數器表示當前執行緒呼叫該物件的

次數.2)

互斥物件的建立

handle createmutex(

lpsecurity_attributes lpmutexattributes, //安全性

bool binitialowner,    //初始的擁有者,要是false則初始沒有擁有者

lpctstr lpname    //設定互斥物件的名字

);3)

獲得互斥物件

dword waitforsingleobject(

handle hhandle, //互斥物件的控制代碼

dword dwmilliseconds //time-out interval, in milliseconds.

//the function returns if the interval elapses,

//even if the object's state is nonsignaled.

//if dwmilliseconds is zero, the function tests the

//object's state and returns immediately.

//if dwmilliseconds is infinite, the

//function's time-out interval never elapses.

);如果第二個引數是0,則是測試物件的狀態後立即返回

如果是infinite,則一直測試物件狀態直到接受到訊號

4)釋放互斥物件

如果乙個執行緒擁有了乙個互斥物件後,當該執行緒執行完成後就要釋放該互斥物件,不如其他的執行緒得不

到互斥物件則無法執行,用releasemutex(hwnd)操作.

下面是**:

#include

#include

dword winapi fun1pro(lpvoid lpparameter);

dword winapi fun2pro(lpvoid lpparameter);

// int index=1000;

int ticket=1000;

handle hmutex;

void main()

當去掉sleep後,乙個執行緒執行多次後才執行第二個執行緒

個人認為加上加上sleep後時間片用完了

所以下乙個程序接著執行

C 多執行緒學習 六 互斥物件

如何控制好多個執行緒相互之間的聯絡,不產生衝突和重複,這需要用到互斥物件,即 system.threading 命名空間中的 mutex 類。我們可以把mutex看作乙個計程車,乘客看作執行緒。乘客首先等車,然後上車,最後下車。當乙個乘客在車上時,其他乘客就只有等他下車以後才可以上車。而執行緒與mu...

C 多執行緒學習 六 互斥物件

如何控制好多個執行緒相互之間的聯絡,不產生衝突和重複,這需要用到互斥物件,即 system.threading 命名空間中的 mutex 類。我們可以把mutex看作乙個計程車,乘客看作執行緒。乘客首先等車,然後上車,最後下車。當乙個乘客在車上時,其他乘客就只有等他下車以後才可以上車。而執行緒與mu...

C 多執行緒學習 六 互斥物件

如何控制好多個執行緒相互之間的聯絡,不產生衝突和重複,這需要用到互斥物件,即 system.threading 命名空間中的 mutex 類。我們可以把mutex看作乙個計程車,乘客看作執行緒。乘客首先等車,然後上車,最後下車。當乙個乘客在車上時,其他乘客就只有等他下車以後才可以上車。而執行緒與mu...