CSingleLock类介绍
译自:https://msdn.microsoft.com/en-us/library/aa313863(v=vs.60).aspx
#include <afxmt.h>
简单说,同步对象(派生自CSyncObject的对象)本身有Lock()、Unlock()函数可以实现加解锁,CSingleLock只是对同步对象进行一层包装,实现了离开函数作用域自动解锁的功能。
CObject >>CMultiLock
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
在这里我们可以看到,后面四类貌似很熟悉吧,是的,它们就是前面提到的线程的同步对象。
上一篇:MFC CSyncObject,CSingleLock,CMultiLock同步类
下一篇:AfxGetMainWnd()、AfxGetApp()->GetMainWnd()主窗口是怎么定的?