Модуль Semaphore.Counting
module Counting: sig .. end
type t
Тип счетных семафоров.
val make : int -> t
make n возвращает новый счетный семафор с начальным значением n. Начальное значение n должно быть неотрицательным.
-
Вызывает исключение
Invalid_argument, еслиn < 0
val release : t -> unit
release s увеличивает значение семафора s. Если другие потоки ожидают на s, один из них возобновляет работу. Если текущее значение s равно max_int, значение семафора не изменяется, а для сигнала о переполнении вызывается исключение Sys_error.
-
Вызывает исключение
Sys_error, если значение семафора превысило быmax_int
val acquire : t -> unit
acquire s блокирует вызывающий поток, пока значение семафора s не станет отличным от нуля, затем атомарно уменьшает значение s и возвращает управление.
val try_acquire : t -> bool
try_acquire s немедленно возвращает false, если значение семафора s равно нулю. В противном случае значение s атомарно уменьшается, а try_acquire s возвращает true.
val get_value : t -> int
get_value s возвращает текущее значение семафора s. Текущее значение может быть изменено в любой момент параллельными операциями Semaphore.Counting.release и Semaphore.Counting.acquire. Поэтому операция get_value подвержена гонкам, и ее результат следует использовать только для отладки или информационных сообщений.
© 1995-2026 INRIA.
https://ocaml.org/manual/5.5/api/Semaphore.Counting.html