2019独角兽企业重金招聘Python工程师标准>>>
Windows的互斥锁Mutex是可以在进程间使用的,CreateMutex时可以指定一个mutex名称,此名称可以被其他进程或线程使用。CreateMutex的第二个参数BOOL bInitialOwner表示在创建后是不是立刻获取此锁,相当于立即WaitForSingleObject
测试代码:
#include
#include
#include
using namespace std;
int main()
{
HANDLE hmutex = OpenMutex(MUTEX_ALL_ACCESS, FALSE, TEXT("MutexTest"));//打开进程锁
if (hmutex == NULL)
{
cout<<"Create Mutex"<
}
DWORD ts = WaitForSingleObject(hmutex, INFINITE);//获取进程锁
if (WAIT_OBJECT_0 == ts)
{
for (int i=0; i<10; i++)
{
cout< Sleep(1000);
}
}
ReleaseMutex(hmutex);
if (hmutex != NULL){
CloseHandle(hmutex);
}
return 0;
}
测试结果:
只有窗口1执行完毕释放锁后,窗口2才能获取到锁,进行下一步的相应操作。
有不足的地方希望大家指出,我会验证更新,一起进步。