c++ 进程锁

Windows的互斥锁Mutex是能够在进程间使用的,CreateMutex时能够指定一个mutex名称,此名称能够被其余进程或线程使用。CreateMutex的第二个参数BOOL bInitialOwner表示在建立后是否是马上获取此锁,至关于当即WaitForSingleObjectios

测试代码:windows

#include <stdio.h>
#include <windows.h>
#include <iostream>
using namespace std;测试


int main()
{
    HANDLE hmutex = OpenMutex(MUTEX_ALL_ACCESS, FALSE, TEXT("MutexTest"));//打开进程锁
    if (hmutex == NULL)
    {
        cout<<"Create Mutex"<<endl;
        hmutex = CreateMutex(NULL, false, TEXT("MutexTest"));//建立进程锁
    }
    DWORD ts = WaitForSingleObject(hmutex, INFINITE);//获取进程锁
    if (WAIT_OBJECT_0 == ts)
    {
        for (int i=0; i<10; i++)
        {
            cout<<i<<endl;
            Sleep(1000);
        }
    }
    ReleaseMutex(hmutex);
    if (hmutex != NULL){
        CloseHandle(hmutex);
    }
    return 0;
}spa

测试结果:线程

只有窗口1执行完毕释放锁后,窗口2才能获取到锁,进行下一步的相应操做。进程

有不足的地方但愿你们指出,我会验证更新,一块儿进步。it

相关文章
相关标签/搜索