在没有MFC的情况下与CMutex进行交互

时间:2020-03-06 14:23:20  来源:igfitidea点击:

我们有多个MFC应用程序,它们使用CMutex(false," blah"),其中" blah"允许互斥锁跨进程边界工作。

这些应用程序之一在没有MFC的情况下被重写(改用Qt)。如何使用Win32调用模拟CMutex? (Qt的QMutex不是进程间的。)我不希望不修改MFC应用程序。

解决方案

以下功能可能就是我们想要的功能,它们都记录在MSDN上。

CreateMutex(...)
WaitForSingleObject(...)
ReleaseMutex(...)

对于进程间互斥锁,我们需要以下调用:

CreateMutex
  
  WaitForSingleObject
  
  ReleaseMutex
  
  CloseHandle

这些是CMutex封装的基础Win32 API调用。

对于仅进程内互斥锁,我们还可以使用以下调用,这些调用速度更快:

InitializeCriticalSection
  
  EnterCriticalSection
  
  LeaveCriticalSection
  
  DeleteCriticalSection