這個閘門元件(class Gate)是在多執行緒環境下,多對一的控制元件。即有一個執行緒利用這個元件進入等待狀態,而其他的執行緒可送一個信號給這元件,讓那個進入等待狀態的執行緒脫離等待繼續執行。
具體的效應歸納如下:
Gate 剛建立的實例處於關閉狀態,即叫用 Gate::Wait() 會進入等待狀態。
當叫用 Gate::Wait() 時:
- 若 Gate 處於關閉狀態,會進入等待直到其他執行緒送來訊號,閘門才會打開繼續執行,並且立刻把門關上
- 若 Gate 已處於開啟狀態,不會進入等待繼續執行,並且立刻把門關上
- 進入等待其實是在睡眠狀態,不會消耗 CPU 資源
其他執行緒使用 Gate::Signal() 送入訊號,不管 Gate 有沒有進入等待,都會把閘門打開
引入檔 |
GATE.HPP |
程式庫 |
cxxlcommon |
|