互斥對象

互斥對象是系統核心維護的一種數據結構,它保證了對象對單個執行緒的訪問權。互斥對象的結構:包含了一個使用數量,一個執行緒ID,一個計數器。使用數量是指有多少個執行緒在調用該對象,執行緒ID是指互斥對象維護的執行緒的ID。計數器表示當前執行緒調用該對象的次數。

互斥對象的創建

HANDLE CreateMutex(

LPSECURITY_ATTRIBUTES lpMutexAttributes,安全屬性結構指針,可為NULL,表示默認安全性

BOOL bInitialOwner,//是否占有該互斥量,TRUE:占有,FALSE:不占有

LPCTSTR lpName//設定互斥對象的名字

);

獲得互斥對象

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,則一直測試對象狀態直到接受到信號

釋放互斥對象

如果一個執行緒擁有了一個互斥對象後,當該執行緒運行完成後就要釋放該互斥對象,不然其他的執行緒得不到互斥對象則無法運行

用ReleaseMutex(HWND);操作

它的具體作用是每調用它一次將互斥對象的計數器減一,直到減到零為止,此時釋放互斥對象,並將互斥對象中的執行緒id

置零。

它的使用條件是,互斥對象在哪個執行緒中被創建,就在哪個執行緒裡面釋放。因為調用的時候會檢查當前執行緒的id是不是

與互斥對象中保存的id一致,若一致,則此次操作有效,不一致,則無效。

相關詞條

相關搜尋

熱門詞條

聯絡我們