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 會啟動作用中使用者物件之作業的保護。
END_REACTIVE_GUARDED_SECTION
結束用於回應物件之程式碼區段的保護。 此巨集在回應類別事件分派中呼叫,以防止事件分派與回應類別實例刪除之間發生「競爭」。 當回應類別 DTOR 設為受保護時,會啟動該機制。
END_THREAD_GUARDED_SECTION
停止作用中使用者物件之作業的保護。 該巨集在 OMThread 事件分派中使用,以保護事件分派不會刪除作用中物件。 當作用中類別 DTOR 設為受保護時,會在針對作用中類別產生的程式碼中啟動該機制。
如果 toGuardThread 是 TRUE,START_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 設為受保護時,會在針對作用中類別產生的程式碼中啟動該機制。
如果 toGuardThread 是 TRUE,START_THREAD_GUARDED_SECTION 巨集及 END_THREAD_GUARDED_SECTION 巨集會由 execute 方法呼叫。