CMutex的使用问题,迷茫了很久!

xxjoyjn 2008-06-06 12:45:05
CMutex从基类继承了Lock和Unlock函数,用来等待和释放,而在MSDN上说法是,使用CMutex,CEvent,CCriticalSection,务必使用
CSigleLocK或者CMultiLock来试验Lock或者Unlock。我就迷茫了,CMutex.Lock()和CSingleLock.Lock()以及CMutex.Unlock()和CSingleLock.Unlock()
到底有什么不同?
谢谢赐教!!!
...全文
1567 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qgw_2000 2008-06-06
  • 打赏
  • 举报
回复
你在代码里完全可以直接调用CMutex的Lock和Unlock函数,这样只是做了一层抽象,所以的同步对象都可以用统一的管理。
xxjoyjn 2008-06-06
  • 打赏
  • 举报
回复
那为什么不直接调用CMutext的Lock和Unlock函数?
qgw_2000 2008-06-06
  • 打赏
  • 举报
回复 1
CSingleLock和CMultiLock都是用来统一管理CMutex,CEvent,CSemaphore和CCriticalSection同步对象的访问的,它们的成员函数Lock和Unlock分别用来等待和释放这些同步对象。
CSingleLock通过构造函数传入管理的同步对象的指针,CMultiLock传入要管理的多个同步对象的指针。

CSingleLock::Lock的实现:
调用实际同步对象的Lock成员函数,对应到CMutex,实际上调用的是CMutex::Lock,最终都会调用WaitForSingleObject
CSingleLock::Unlock的实现:
调用实际同步对象的Unock成员函数,对应到CMutex,实际上调用的是CMutex::Unock,最终都会调用ReleaseMutex

CMultiLock::Lock的实现:
调用WaitForMultipleObjects或者MsgWaitForMultipleObjects
CMultiLock::Unock的实现:
调用所以同步对象的Unlock函数。

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧