對(duì)于一個(gè)Mutex宠默,在沒有進(jìn)程/線程搶占的時(shí)候,一直處于signaled狀態(tài)运怖。一旦有一個(gè)進(jìn)程/線程搶到控制權(quán)拼弃,狀態(tài)就變成nonsignaled。因此摇展,同一時(shí)刻吻氧,只能有一個(gè)進(jìn)程/線程搶到控制權(quán)。
// 創(chuàng)建互斥鎖
HANDLE CreateMutexA(
LPSECURITY_ATTRIBUTES lpMutexAttributes, // 指向安全屬性的指針
// True :創(chuàng)建MutexObject的線程咏连,立刻擁有Mutex的控制權(quán)医男。
// False:必須使用等待函數(shù)waitForSigleObject。
BOOL bInitialOwner,
LPCSTR lpName // 指定互斥體對(duì)象的名字捻勉,可以用vbNullString創(chuàng)建一個(gè)未命名的互斥體對(duì)象镀梭。
);
// 釋放控制權(quán)
BOOL ReleaseMutex(
HANDLE hMutex
);
// 一般用于跨進(jìn)程獲取已經(jīng)創(chuàng)建的Mutex對(duì)象
HANDLE OpenMutexW(
// 訪問的方式:
// SYNCHRONIZE 允許互斥體對(duì)象同步使用
// MUTEX_ALL_ACCESS 請(qǐng)求對(duì)互斥體的完全訪問
DWORD dwDesiredAccess,
BOOL bInheritHandle, // true,子進(jìn)程能夠繼承句柄
LPCWSTR lpName // 指定互斥體對(duì)象的名字
);
Demo:
svn://gitee.com/sudaidai/Knowledge_List_of_C
文件夾路徑:WindowsAPI/Mutex