OMGuard 類別

OMGuard 用於在進入與結束之間,保護或鎖定使用者作業。 它用於所產生的程式碼中(GUARD_OPERATION 巨集中),以確保對受保護作業中的互斥旗標進行適當的鎖定和解除鎖定。

已明確地停用 OMGuard 的複製建構子及指派運算子,以免錯誤地解除鎖定受保護的物件互斥旗標。

此類別在標頭檔 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 設為受保護時,會在針對作用中類別產生的程式碼中啟動該機制。

如果 toGuardThreadTRUESTART_THREAD_GUARDED_SECTION 巨集及 END_THREAD_GUARDED_SECTION 巨集會由 execute 方法呼叫。

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 設為受保護時,會在針對作用中類別產生的程式碼中啟動該機制。

如果 toGuardThreadTRUESTART_THREAD_GUARDED_SECTION 巨集及 END_THREAD_GUARDED_SECTION 巨集會由 execute 方法呼叫。


意見回饋