解决方案 »

  1.   

    可以先调用OpenMutex方法,查看互斥量创建没有,如果创建了就会返回共有的句柄了,如果没创建,那你调用CreateMutex来创建
      

  2.   

    OpenMutex去打开,如果创建了,就可以直接打开。然后来获取
    Mutex可以加Global全局前缀
      

  3.   


    我在主进程创建互斥读写锁。mymutex1;然后启动子进程。子进程用OpenMutex打开,返回值非NULL。
     写入数据后,用ReleaseMutex(mymutex1),结果
    GetLastError()是288 网上查的288  0x0120意图释放不属于叫用者的mutex。 既然OpenMutex打开,返回值非NULL,为什么释放不成功? 谢谢!
      

  4.   

    我在主进程创建互斥读写锁。mymutex1;然后启动子进程。子进程用OpenMutex打开,返回值非NULL。
     写入数据后,用ReleaseMutex(mymutex1),结果
    GetLastError()是288 网上查的288  0x0120意图释放不属于叫用者的mutex。 既然OpenMutex打开,返回值非NULL,为什么释放不成功?更奇怪的是,在主进程中ReleaseMutex(mymutex1)是成功的。CreateMutex(NULL, TRUE, "mymutex1"); 是否第一个参数不能是NULL? If this parameter is NULL, the handle cannot be inherited by child processes. 
    那么要如何写第一个参数,才能被子进程继承呢?百度上全是NULL的例子。请大侠出手。
      

  5.   

    我现在手头机器上只有QT IDE,连WaitForSingleObject(hMutex,INFINITE); 都wait不住,我使用CreateEvent就可以在多进程使用,不知道楼主用的是什么开始环境,是vs,还是什么,是不是也和环境也有关系啊。
      

  6.   

    你现在Mutex在谁手里,只有owner能够Release
      

  7.   

    你现在Mutex在谁手里,只有owner能够Release那楼上的意思是Mutex不能在多进程使用了?这个不对吧!Mutex是系统资源啊,他存在的意义就是做互斥,如果不能在多进程中使用把他做成系统资源有何意义?
      

  8.   

    的确是谁创建,谁才可以release.我只好改为子进程创建。主进程延时10秒open,再waitfor 再子进程release,主进程收到消息...你现在Mutex在谁手里,只有owner能够Release
      

  9.   

    本帖最后由 VisualEleven 于 2014-08-01 16:20:57 编辑
      

  10.   

    你现在Mutex在谁手里,只有owner能够Release那楼上的意思是Mutex不能在多进程使用了?这个不对吧!Mutex是系统资源啊,他存在的意义就是做互斥,如果不能在多进程中使用把他做成系统资源有何意义?
    学到了,不知道有父子关系的进程是否可以使用同一个mutex?