解决方案 »

  1.   

    你是Open的, 就不应该release.  只需要CloseHandle即可.只有Create的进程才有能力release
      

  2.   

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

  3.   


    我理解release是释放互斥控制权给其它进程使用。
    CloseHandle是彻底删除该mymutex1。
    难道我理解错了。子进程CloseHandle不会删除该mymutex1。那就是每次子进程要使用时,重新Open?
      

  4.   


    Mutex是主进程创建的。子进程写数据到共享内存后,需要释放控制权,让主进程可以从共享内存读数据。我在子进程中使用Release释放控制权,发生288错误。
      

  5.   

    MSDN原文:
    ReleaseMutex Function:
    Releases ownership of the specified mutex object.The ReleaseMutex function fails if the calling thread does not own the mutex object.这只是释放所有权
    只有CloseHandle才是释放资源.
      

  6.   


    使用了CloseHandle,不发生错误,但仍然无法使主进程中的waitforsingleobject(mymutex1)收到信息。
      

  7.   

    ReleaseMutex一般只能由创建该Mutex的进程执行,你可以在创建子进程后用DuplicateHandle把Mutex生成副本,然后给子进程发送副本的句柄
      

  8.   

    CreateMutex的时候,第二个参数传递FALSE
      

  9.   


    ReleaseMutex一般只能由创建该Mutex的进程执行,经过试验是正确的。我在子进程中创建,主进程延迟10秒后open,然后主进程中waitfor,直到子进程release,初步成功。你可以在创建子进程后用DuplicateHandle把Mutex生成副本,然后给子进程发送副本的句柄。
    不知DuplicateHandle把Mutex生成副本是否有效。留待探讨。