module Semaphore: Semaphore
計數號誌是一個可由多個執行緒同時存取的計數器。其典型用途是透過計算可用資源的單位數量,來同步資源的生產者和消費者。
號誌的兩個基本操作是:
module Counting:sig
..end
二元號誌是計數號誌的一種變體,其中號誌只能取兩個值:0 和 1。
二元號誌可用於控制對單一共享資源的存取,值 1 表示「資源可用」,值 0 表示「資源不可用」。
二元號誌的「釋放」操作會將其值設定為 1,「取得」操作會等待直到值為 1,然後將其設定為 0。
當互斥鎖規則(由鎖定互斥鎖的執行緒解除鎖定)過於嚴格時,可以使用二元號誌來代替互斥鎖(請參閱模組 Mutex
)。「取得」操作相當於鎖定互斥鎖,「釋放」操作相當於解除鎖定,但「釋放」操作可以在與執行「取得」操作不同的執行緒中執行。同樣地,釋放已經可用的二元號誌是安全的。
module Binary:sig
..end