@hackage semaphore-compat2.0.0

Cross-platform abstraction for system semaphores

semaphore-compat

semaphore-compat provides cross-platform semaphores that can be shared across processes.

It uses different backends on different platforms:

  • POSIX: Unix domain sockets with automatic return of tokens from disconnected clients.
  • Windows: Win32 named semaphores. Tokens held by crashed clients are not returned automatically.
  • wasm/JavaScript: buildable stubs that throw unsupported-operation errors. Avoid calling this code on these backends.

It supports:

  • Creating server semaphores (createSemaphore, freshSemaphore).
    • A server is the process that creates the semaphore and must stay alive for the duration of its use.
    • A server process can also act as a client and request/release tokens from the semaphore.
  • Opening client semaphores (openSemaphore).
  • Waiting with tryWaitOnSemaphore or interruptible waitOnSemaphore, which return SemaphoreTokens.
  • Releasing tokens with releaseSemaphoreToken or withSemaphoreToken.
  • Destroying semaphores with destroyClientSemaphore and destroyServerSemaphore.
  • Serialising names and checking versions with semaphoreIdentifier and versionsAreCompatible.