模組 Stdlib.Semaphore

module Semaphore: Semaphore

計數號誌

計數號誌是一個可由多個執行緒同時存取的計數器。其典型用途是透過計算可用資源的單位數量,來同步資源的生產者和消費者。

號誌的兩個基本操作是:

module Counting: sig .. end

二元號誌

二元號誌是計數號誌的一種變體,其中號誌只能取兩個值:0 和 1。

二元號誌可用於控制對單一共享資源的存取,值 1 表示「資源可用」,值 0 表示「資源不可用」。

二元號誌的「釋放」操作會將其值設定為 1,「取得」操作會等待直到值為 1,然後將其設定為 0。

當互斥鎖規則(由鎖定互斥鎖的執行緒解除鎖定)過於嚴格時,可以使用二元號誌來代替互斥鎖(請參閱模組 Mutex)。「取得」操作相當於鎖定互斥鎖,「釋放」操作相當於解除鎖定,但「釋放」操作可以在與執行「取得」操作不同的執行緒中執行。同樣地,釋放已經可用的二元號誌是安全的。

module Binary: sig .. end