互斥對象的創建
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一致,若一致,則此次操作有效,不一致,則無效。