模組 Semaphore.Counting

module Counting: sig .. end

type t 

計數號誌 (counting semaphores) 的型別。

val make : int -> t

make n 會回傳一個新的計數號誌,其初始值為 n。初始值 n 必須是非負數。

val release : t -> unit

release s 會將號誌 s 的值遞增。如果有其他執行緒在等待 s,則會重新啟動其中一個執行緒。如果 s 的目前值等於 max_int,則號誌的值保持不變,並拋出 Sys_error 例外以表示溢位。

val acquire : t -> unit

acquire s 會阻塞呼叫的執行緒,直到號誌 s 的值不為零,然後以原子操作將 s 的值遞減並回傳。

val try_acquire : t -> bool

try_acquire s 如果號誌 s 的值為零,則立即回傳 false。否則,以原子操作將 s 的值遞減,且 try_acquire s 回傳 true

val get_value : t -> int

get_value s 會回傳號誌 s 的目前值。目前值可能會在任何時間被併發的 Semaphore.Counting.releaseSemaphore.Counting.acquire 操作修改。因此,get_value 操作具有競爭條件 (racy),其結果僅應用於除錯或資訊訊息。