-
互斥對象
鎖定
- 中文名
- 互斥對象
- 類 型
- 數據結構
互斥對象概念
它保證了對象對單個線程的訪問權
互斥對象的結構:包含了一個使用數量,一個線程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一致,若一致,則此次操作有效,不一致,則無效。
- 詞條統計
-
- 瀏覽次數:次
- 編輯次數:14次歷史版本
- 最近更新: lijia19890223