OMGuard 类

OMGuard 用于使用户操作在入口与出口之间被守护或锁定。这个类在生成的代码(GUARD_OPERATION 宏)中使用, 以确保在被守护的操作中适当锁定和释放互斥对象。

OMGuard 的 copy 构造函数和 assignment 运算符已被显式禁用,以避免错误地将被守护对象互斥对象解锁。

这个类是在头文件 omprotected.h 中定义的。

宏摘要

END_REACTIVE_GUARDED_SECTION 结束对用于反应对象的代码部分的保护。

END_THREAD_GUARDED_SECTION 停止对活动用户对象操作的保护。

GUARD_OPERATION 通过 OMGuard 类对象来守护操作。

START_DTOR_REACTIVE_GUARDED_SECTION 启动对用于销毁反应实例的代码部分的保护。

START_DTOR_THREAD_GUARDED_SECTION 启动对活动用户对象析构函数的保护。

START_REACTIVE_GUARDED_SECTION 启动对用于反应对象的代码部分的保护。

START_THREAD_GUARDED_SECTION 启动对活动用户对象操作的保护。

构造概要
OMGuard
构造 OMGuard 对象
~OMGuard
销毁 OMGuard 对象
方法概要
getGuard
获取守护
lock
锁定 OMGuard 对象的互斥对象
unlock
OMGuard 对象的互斥对象解锁

END_REACTIVE_GUARDED_SECTION

结束对用于反应对象的代码部分的保护。在反应类事件分派中调用这个宏,以防止在事件分派与反应类实例删除之间出现“争用”。将反应类 DTOR 设置为被守护时,将会激活此机制。

END_THREAD_GUARDED_SECTION

停止对活动用户对象操作的保护。在 OMThread 事件分派中使用这个宏,以防止事件分派删除活动对象。将活动类 DTOR 设置为被守护时,将在为活动类生成的代码中激活此机制。

如果 toGuardThreadTRUE,那么 execute 方法将调用 START_THREAD_GUARDED_SECTION 宏和 END_THREAD_GUARDED_SECTION 宏。

GUARD_OPERATION

通过 OMGuard 类对象来守护操作。这个宏在生成的代码中使用。

这个宏支持将 OMProtected 聚集到被守护类中,而不是让被守护类继承 OMProtected

OMDECLARE_GUARDED

OMProtected 对象聚集到被守护类中,而不是让这些类继承 OMProtected。其定义如下所示:

#define OMDECLARE_GUARDED
  public:
     inline void lock() const {m_omGuard.lock();}
     inline void unlock() const
        {m_omGuard.unlock();}
     inline const OMProtected& getGuard() 
         const {return m_omGuard;}

START_DTOR_REACTIVE_GUARDED_SECTION

启动对用于销毁反应实例的代码部分的保护。将反应(不活动)类设置为被守护时,将在这个类的 DTOR 中调用这个宏。这样做是为了防止在删除反应实例时(在删除与事件分派之间)出现“争用”。

START_DTOR_THREAD_GUARDED_SECTION

启动对活动用户对象析构函数的保护。将活动类设置为被守护时,将在这个类的 DTOR 中调用这个宏。这样做是为了防止在删除活动实例时(在删除与事件分派之间)出现“争用”。

START_REACTIVE_GUARDED_SECTION

启动对用于反应对象的代码部分的保护。在反应类事件分派中调用这个宏,以防止在事件分派与反应类实例删除之间出现“争用”。将反应类 DTOR 设置为被守护时,将会激活此机制。

START_THREAD_GUARDED_SECTION

启动对活动用户对象操作的保护。在 OMThread 事件分派中使用这个宏,以防止事件分派删除活动对象。将活动类 DTOR 设置为被守护时,将在为活动类生成的代码中激活此机制。

如果 toGuardThreadTRUE,那么 execute 方法将调用 START_THREAD_GUARDED_SECTION 宏和 END_THREAD_GUARDED_SECTION 宏。


反馈