博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++ 进程锁
阅读量:7153 次
发布时间:2019-06-29

本文共 774 字,大约阅读时间需要 2 分钟。

hot3.png

Windows的互斥锁Mutex是可以在进程间使用的,CreateMutex时可以指定一个mutex名称,此名称可以被其他进程或线程使用。CreateMutex的第二个参数BOOL bInitialOwner表示在创建后是不是立刻获取此锁,相当于立即WaitForSingleObject

测试代码:

#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;
}

测试结果:

161507_NLA7_2606498.png

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

有不足的地方希望大家指出,我会验证更新,一起进步。

转载于:https://my.oschina.net/u/2606498/blog/1595187

你可能感兴趣的文章
How to enable LDAP over SSL with a third-party certification authority
查看>>
[NOIP2010] 提高组 洛谷P1525 关押罪犯
查看>>
CSS的优先级
查看>>
2.编程语言,格式化输出,与用户交互
查看>>
hashlib加密
查看>>
又见拦截导弹
查看>>
三十五、MySQL 运算符
查看>>
SQL注入绕过某waf的详细过程。
查看>>
CF978A Remove Duplicates【数组操作/STL】
查看>>
TCP中需要了解的东西
查看>>
关于正则表达式-转载
查看>>
AC3 overview
查看>>
schroeder reverb matlab实现
查看>>
nandflash的读写(2440)
查看>>
复习mysql
查看>>
CSS知识点总结[部分]
查看>>
xml是什么?
查看>>
史上最简单的Docker入门教程
查看>>
对Spring的一些个人理解
查看>>
Builder设计模式
查看>>