Module Counting
: sigendtypet
The type of counting semaphores.
valmake : int->tmaken returns a new counting semaphore, with initial value n . The initial value n must be nonnegative.
RaisesInvalid_argument if n<0valrelease : t->unitreleases increments the value of semaphore s . If other threads are waiting on s , one of them is
restarted. If the current value of s is equal to max_int , the value of the semaphore is unchanged and a
Sys_error exception is raised to signal overflow.
RaisesSys_error if the value of the semaphore would overflow max_intvalacquire : t->unitacquires blocks the calling thread until the value of semaphore s is not zero, then atomically
decrements the value of s and returns.
valtry_acquire : t->booltry_acquires immediately returns false if the value of semaphore s is zero. Otherwise, the value of s
is atomically decremented and try_acquires returns true .
valget_value : t->intget_values returns the current value of semaphore s . The current value can be modified at any time by
concurrent Semaphore.Counting.release and Semaphore.Counting.acquire operations. Hence, the get_value
operation is racy, and its result should only be used for debugging or informational messages.
OCamldoc 2025-06-12 Semaphore.Counting(3o)