Page
Library
Module
Module type
Parameter
Class
Class type
Source
Posix_semaphorePOSIX semaphore
A semaphore. The type 'a is only a phantom type specifying if the semaphore is a named or unnamed one. This avoids the possible error of closing/destroying a semaphore with the wrong function.
val sem_wait : 'a semaphore -> (unit, [> `EUnix of Unix.error ]) Result.resultsem_wait s decrements (locks) the semaphore s. If the value of s is greater than zero, the decrement proceeds and sem_wait returns immediately. Otherwise the call blocks until either is becomes possible due to a concurrent sem_post or a signal handler interrupts the call.
val sem_post : 'a semaphore -> (unit, [> `EUnix of Unix.error ]) Result.resultsem_post s increments (unlocks) the semaphore s.
val sem_init :
int ->
([> `Unnamed ] semaphore, [> `EUnix of Unix.error ]) Result.resultsem_init n creates and initializes a new unnamed semaphore. The initial value of the semaphore is n.
val sem_getvalue :
'a semaphore ->
(int, [> `EUnix of Unix.error ]) Result.resultsem_getvalue s returns the current value of the semaphore s.
val sem_destroy :
[> `Unnamed ] semaphore ->
(unit, [> `EUnix of Unix.error ]) Result.resultsem_destroy s destroys the unnamed semaphore s.
val sem_close :
[> `Named ] semaphore ->
(unit, [> `EUnix of Unix.error ]) Result.resultsem_close s closes the named semaphore s.
val sem_trywait :
'a semaphore ->
(unit, [> `EUnix of Unix.error ]) Result.resultsem_trywait s is the same as sem_wait s, except that if the decrement cannot be performed immediately, sem_trywait returns an error instead of blocking.
val sem_timedwait :
'a semaphore ->
Posix_time.Timespec.t ->
(unit, [> `EUnix of Unix.error ]) Result.resultsem_timedwait s t is the same as sem_wait s except that t specifies the amount of time the call should block if the decrement cannot be immediately perforned. t is an asbolute time; if it has already expired by the time of the call, and the semaphore s could not be locked immediately, sem_timedwait s t fails with a timeout error.
val sem_unlink : string -> (unit, [> `EUnix of Unix.error ]) Result.resultsem_unlink path removes the named semaphore referenced by path. The semaphore is removed immediately but only destroyed once all other processes that have the semaphore open close it.
val sem_open :
string ->
Unix.open_flag list ->
Unix.file_perm ->
int ->
([> `Named ] semaphore, [> `EUnix of Unix.error ]) Result.resultsem_open path flags perms n creates a new named semaphore with initial value n.