有4个进程都要访问同一个设备,但该设备一次只能被一个进程所使用。如果使用Mutex来同步各个进程的话,4个进程访问设备的伪代码按下面做法对不对..
    
  HANDLE hMutex=CreateMutex(NULL,FALSE,"Mutex_for_equip"); //每个进程都使用 Mutex_for_equip作为Mutex名字
  .............  WaitForSingleObject(hMutex,INFINITE);
  {
  .........访问设备;
  }
   
  ReleaseMutex(hMutex);  ...........
   
  CloseHandle(hMutex);  ............  4个进程都采用以上同样的代码,应该没有问题吧?

解决方案 »

  1.   

    有问题,一个进程create创建hmutex,另外几个进程用open这样才可以,否则几个进程都create后面的进程的handle会失败的。用open  name参数就可以得到,
      

  2.   

    不妥,CreateMutex 和 CloseHandle(hMutex) 在“锁”外面,本身或有同步问题。最好在进程外先创建hMutex,再传给进程使用。
      

  3.   

    可以考虑用CriticalSection,临界区实现进程互斥访问更方便。
      

  4.   


    就是不能用CriticalSection啊,这个只能玩线程