互斥旗標是基本同步化機制,用於保護執行緒內的主要區段。 互斥旗標用來實作受保護物件。互斥旗標可讓一個執行緒互斥存取資源。 當一次只容許一個執行緒修改資料或部分其他受管制資源時,互斥旗標非常有用。 例如,將節點新增至鏈結清單即是一次只應由一個執行緒所容許的處理程序。 使用互斥旗標控制鏈結清單,一次只有一個執行緒可以取得清單的存取權。
Rational® Rhapsody® 的互斥旗標實作會作為遞迴鎖定互斥旗標。 這表示相同的執行緒可以多次鎖定互斥旗標而不會封鎖其自身。 換句話說,互斥旗標實際上是已計數的號誌。 針對目標環境實作 OMOSMutex 時,您應該將其實作為遞迴鎖定互斥旗標。
互斥旗標可以是自由或已鎖定的(一開始它們是自由的)。 當作業執行 lock 作業,並尋找已鎖定的互斥旗標時,它必須等待。 該作業會隨其他已封鎖的作業一起,置於與互斥旗標相關聯的等待佇列中,CPU 排程器會選取其他的作業執行。如果 lock 作業尋找自由的互斥旗標,則作業會鎖定互斥旗標,並進入其主要區段。 當任何作業藉由呼叫 free 釋放互斥旗標時,等待佇列中的第一個已封鎖作業會移動至備妥佇列,在該佇列中,可以選取該作業,以根據 CPU 排程演算法執行。
相同的執行緒可對相同互斥旗標的 lock 及 free 呼叫進行巢狀處理,而不會無限期地將其自身封鎖。 相同執行緒的巢狀鎖定不會封鎖鎖定執行緒。 不過,會計算巢狀鎖定數,以便適當的 free 實際釋放互斥旗標。