CCriticalSection选件类
表示“临界区” —每个允许一个线程同时访问资源或代码段的同步对象。
class CCriticalSection : public CSyncObject
成员
公共构造函数
名称 |
说明 |
---|---|
构造 CCriticalSection 对象。 |
公共方法
名称 |
说明 |
---|---|
用于 CCriticalSection 对象的访问权。 |
|
释放 CCriticalSection 对象。 |
公共运算符
名称 |
说明 |
---|---|
检索指向内部 CRITICAL_SECTION 对象。 |
公共数据成员
名称 |
说明 |
---|---|
CRITICAL_SECTION 对象。 |
备注
只有一个线程中一次允许修改数据或某些其他受控资源时,临界区很有用。例如,添加节点到连接表是应由一个线程次只允许的过程。通过使用控件的 CCriticalSection 对象的链接列表,因此,只有一个线程可能对列表一次访问。
说明 |
---|
实际Win32 CRITICAL_SECTION 对象提供 CCriticalSection 选件类的功能。 |
临界区使用而不是mutex (请参见 CMutex),而速度是重要的,而不会使用资源进程边界。
有两个方法用于 CCriticalSection 对象:独立应用程序和嵌入选件类。
在需要时,使用独立 CCriticalSection 对象的独立方法,构造 CCriticalSection 对象。在成功从构造函数后返回,显式锁定使用名为的对象。锁定。在执行访问临界区时,应调用 unlock。此方法,即,而可以读取源代码的人员的更清晰,更容易出错在访问前后,必须记住锁定和取消锁定临界区。
一种更更好的方法是使用 CSingleLock 选件类。它还有一个 Lock 和 Unlock 方法,但是,您不需要考虑打开该资源,如果发生异常。
嵌入方法可以使用多个线程间共享选件类通过添加 CCriticalSection类型的数据成员添加到选件类和锁定数据成员,并根据需要。
有关使用 CCriticalSection 对象的更多信息,请参见文章 多线程处理:如何使用同步类选件。
继承层次结构
CCriticalSection
要求
Header: afxmt.h