執行緒學習筆記(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...