OMThread 類別

OMThread 是架構基礎作用中類別。 其責任如下:

此類別在標頭檔 omthread.h 中進行定義。

OMThread 是每個作用中類別的基礎類別。 作用中類別的物件:

因此,每個作用中物件都具有 OMThread 實例,其有兩個事物組成:

依預設,應用程式中至少具有兩個執行緒:計時器執行緒及主要執行緒。 在此簡式案例中,所有事件都排入主要執行緒事件佇列中。

每個作業系統都具有原生執行緒的不同實作。

執行緒負責將事件服務提供給在其上執行的所有實例。 指派給物件的每個事件都會傳送至其相關執行緒。 執行緒會在事件佇列中儲存事件。OMThread 使用 while 迴圈,在事件出現在佇列前端時,耗用事件。

作用中物件還可以提供非作用中物件。 例如,您的應用程式可能具有類別 a,該類別具有狀態圖且處於作用中,因此其會繼承自 OMThreadOMReactive。 您的應用程式還可能具有類別 p,該類別具有狀態圖,但處於非作用中。 類別 p 會繼承自 OMReactive

假設 pa 的執行緒下執行。以 p 為目標的每個事件都必須儲存在某處,且 p 沒有事件佇列。 因此,p 會將以其為目的地的事件委派至 a 的事件佇列中,因為 pa 的作業系統執行緒上執行,且 a 具有事件佇列。

如果您具有下列程式碼行(產生事件 e 至類別 p),則 e 會儲存在 aOMThread 事件佇列中:

   p -> GEN(e)

OMThread 中,execute 方法會輪流選取事件佇列,以尋找更多的事件。 當該方法找到一或多個事件時,它會從事件佇列中取出第一個事件(例如,e)。該事件具有指定目的地的欄位(在此範例中為 p)。 p 隨後會被告知,它應該對事件 e 做出回應。無需立即耗用該事件 - 該事件在事件佇列中等待。當到達耗用該事件的時間時,會從事件佇列中取出該事件,並使用 takeEvent 方法,將其注入 pOMReactive

在 4.0 版中,來自 OMProtected 的繼承已取代為聚集。 因此,下列內容已新增至 OMThread 介面:

屬性摘要
aomthread - 指定執行緒的「設備測試」組件
endOfProcess - 指定應用程式是否處於處理程序的結尾
eventQueue - 指定執行緒的事件佇列
thread - 指定執行緒的 "os" 組件
toGuardThread - 決定是否保護執行緒程式碼的某區段
建構摘要
OMThread
建構 OMThread 物件
~OMThread
毀損 OMThread 物件
方法摘要
allowDeleteInThreadsCleanup
延遲架構執行緒的毀損,直到應用程式終止且所有使用者執行緒被刪除為止
cancelEvent
將單一事件標示為已取消(也就是說,它會將事件的 ID 變更為 常數
cancelEvents
將所有以指定 OMReactive 實例為目標的事件標示為已取消(也就是說,它會將事件 ID 變更為 常數
cleanupAllThreads
結束 (kill) 應用程式中的所有執行緒(主要執行緒及執行 cleanupAllThreads 方法的執行緒除外)
cleanupThread
提供「連結鉤」,以便可以在不呼叫 DTOR 的情況下,清除執行緒
destroyThread
毀損架構的預設作用中類別或物件
doExecute
是執行緒主要迴圈函數的進入點
execute
是執行緒主要迴圈函數
getAOMThread
由架構用於動畫之目的
getEventQueue
由架構用於動畫之目的
getGuard
取得 OMProtected 組件的參照
getOsHandle
傳回執行緒的作業系統 ID
getOSThreadEndClb
要求回呼函數,以結束現行作業系統執行緒
getStepper
由架構用於動畫之目的
鎖定
鎖定執行緒互斥旗標
omGetEventQueue
傳回事件佇列
佇列
將事件排入佇列讓執行緒事件迴圈處理 (execute)
回復
回復由 暫停 方法暫停的執行緒
schedTm
建立逾時要求,並委派要求給 OMTimerManager
setEndOSThreadInDtor
指定是否刪除毀損中的作業系統執行緒
setPriority
設定要執行之執行緒的優先順序
setToGuardThread
設定 toGuardThread 旗標
shouldGuardThread
判定執行緒是否為受保護的
開始
啟動執行緒,以啟動其事件處理迴圈
stopAllThreads
用於支援 Rational® Rhapsody® Developer for C++ 執行架構 (COM) 的 DLL 版本
暫停
暫停執行緒
解除鎖定
解除鎖定執行緒互斥旗標
unschedTm
取消逾時要求
屬性與旗標

aomthread

此受保護的屬性會指定執行緒的「設備測試」組件。

其定義方式如下:

AOMThread *aomthread;

AOMThread 類別在設備測試應用程式的動畫架構中定義,在非設備測試模式中會設為空類別。

endOfProcess

此公用屬性會指定應用程式是否處於處理程序的結尾。 如果是,則必須清除處理程序的最後一個執行緒。

此旗標可能的值如下:

其定義方式如下:

static int endOfProcess;

eventQueue

此受保護的屬性會指定執行緒的事件佇列。

其定義方式如下:

OMEventQueue *eventQueue;

OMEventQueue 類別在 os.h 中定義。

執行緒 (thread)

此受保護的屬性會指定執行緒的 "os" 組件。

其定義方式如下:

OMOSThread *thread;

OMOSThread 類別在 os.h 中定義。

toGuardThread

此受保護的屬性會決定是否保護執行緒程式碼的某區段。如果其設為 TRUE,則會保護程式碼。否則,不會保護程式碼。

其定義方式如下:

OMBoolean toGuardThread;
OMBoolean 在 rawtypes.h 中定義。

execute 方法在啟動其事件迴圈反覆運算之前,會檢查 toGuardThread。 如果 toGuardThreadTRUE,則 execute 會呼叫 OMGuard 類別OMGuard 類別 巨集。


回饋