= 1024" x-on:close-sidebar="sidebar=window.innerWidth >= 1024 && true">
ON THIS PAGE
package containers
-
containers
-
containers.data
-
containers.monomorphic
-
containers.sexp
-
containers.top
Legend:
Library
Module
Module type
Parameter
Class
Class type
Library
Module
Module type
Parameter
Class
Class type
Semaphores
- since 0.13
val create : int -> t
create n
creates a semaphore with initial value n
.
- raises Invalid_argument
if
n <= 0
.
val get : t -> int
Current value.
val acquire : int -> t -> unit
acquire n s
blocks until get s >= n
, then atomically sets s := !s - n
.
val release : int -> t -> unit
release n s
atomically sets s := !s + n
.
val with_acquire : n:int -> t -> f:(unit -> 'a) -> 'a
with_acquire ~n s ~f
first acquires s
with n
units, calls f ()
, and then releases s
with n
units. Safely release the semaphore even if f ()
fails.
val wait_until_at_least : n:int -> t -> f:(unit -> 'a) -> 'a
wait_until_at_least ~n s ~f
waits until get s >= n
, then calls f ()
and returns its result. Doesn't modify the semaphore.
ON THIS PAGE