CSingleLock类介绍

清泛编译
译自:https://msdn.microsoft.com/en-us/library/aa313863(v=vs.60).aspx

CSingleLock

CSingleLock 没有父类。

CSingleLock对象用于多线程程序中资源的控制访问上。为使用同步类CSemaphore,CMutex,CCriticalSection和CEvent,你必须创建CSingleLock或CMultiLock对象来等待并释放同步对象。当你一次只需等待一个对象时使用CSingleLock。在特定的时间使用多个对象的话使用的CMultiLock。
要使用CSingleLock对象,在受控制资源的类成员函数中调用它的构造函数。然后调用IsLocked成员函数以确定该资源是否可用。如果可用,则继续执行成员函数剩余的逻辑。如果资源不可用,等待一定时间资源被释放,或返回失败。资源使用完成后,调用Unlock函数,使CSingleLock对象能够再次使用,或允许CSingleLock对象被销毁。
CSingleLock对象需要存在一个CSyncObject派生的对象。这通常是受控资源的类的数据成员。有关如何使用CSingleLock对象的详细信息,请参见Visual C ++程序员指南中的文章。

#include <afxmt.h>


简单说,同步对象(派生自CSyncObject的对象)本身有Lock()、Unlock()函数可以实现加解锁,CSingleLock只是对同步对象进行一层包装,实现了离开函数作用域自动解锁的功能。

CObject       >>CMultiLock

             >>CSingleLock

             >>CSyncObject>>CCriticalSetion(临界区)

                                      >>CMutex(互斥)

                                      >>CEvent(事件)

                                      >>CSemaphore(信号量)

在这里我们可以看到,后面四类貌似很熟悉吧,是的,它们就是前面提到的线程的同步对象。

CSingleLock

分享到:
评论加载中,请稍后...
创APP如搭积木 - 创意无限,梦想即时!
回到顶部