logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Semaphore - Semaphores

Documentation

       Module Semaphore
        : sigend

       Semaphores

       A semaphore is a thread synchronization device that can be used to control access to a shared resource.

       Two flavors of semaphores are provided: counting semaphores and binary semaphores.

       Since 4.12

   Countingsemaphores
       A  counting semaphore is a counter that can be accessed concurrently by several threads.  The typical use
       is to synchronize producers and consumers of a resource by counting how many units of  the  resource  are
       available.

       The two basic operations on semaphores are:

       -"release"  (also  called  "V",  "post",  "up", and "signal"), which increments the value of the counter.
       This corresponds to producing one more unit of the shared resource and making it available to others.

       -"acquire" (also called "P", "wait", "down", and "pend"), which waits until the counter is  greater  than
       zero and decrements it.  This corresponds to consuming one unit of the shared resource.

       moduleCounting:sigendBinarysemaphores
       Binary  semaphores  are a variant of counting semaphores where semaphores can only take two values, 0 and
       1.

       A binary semaphore can be used to control access to a  single  shared  resource,  with  value  1  meaning
       "resource is available" and value 0 meaning "resource is unavailable".

       The "release" operation of a binary semaphore sets its value to 1, and "acquire" waits until the value is
       1 and sets it to 0.

       A  binary  semaphore  can  be  used  instead of a mutex (see module Mutex ) when the mutex discipline (of
       unlocking the mutex from the thread  that  locked  it)  is  too  restrictive.   The  "acquire"  operation
       corresponds  to  locking  the  mutex,  and  the "release" operation to unlocking it, but "release" can be
       performed in a thread different than the one that performed the  "acquire".   Likewise,  it  is  safe  to
       release a binary semaphore that is already available.

       moduleBinary:sigend

OCamldoc                                           2025-06-12                                      Semaphore(3o)

Module

       Module   Semaphore

Name

       Semaphore - Semaphores

See Also