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

This manual page is part of the POSIX Programmer's Manual. The Linux implementation of this interface

Application Usage

       None.

Description

       The  sem_init()  function  shall  initialize  the unnamed semaphore referred to by sem.  The value of the
       initialized semaphore shall be value.  Following a successful call to sem_init(), the  semaphore  may  be
       used  in  subsequent  calls to sem_wait(), sem_timedwait(), sem_trywait(), sem_post(), and sem_destroy().
       This semaphore shall remain usable until the semaphore is destroyed.

       If the pshared argument has a non-zero value, then the semaphore is shared  between  processes;  in  this
       case,   any  process  that  can  access  the  semaphore  sem  can  use  sem  for  performing  sem_wait(),
       sem_timedwait(), sem_trywait(), sem_post(), and sem_destroy() operations.

       If the pshared argument is zero, then the semaphore is shared between threads of the process; any  thread
       in  this  process  can use sem for performing sem_wait(), sem_timedwait(), sem_trywait(), sem_post(), and
       sem_destroy() operations.

       See Section2.9.9, SynchronizationObjectCopiesandAlternativeMappings for further requirements.

       Attempting to initialize an already initialized semaphore results in undefined behavior.

Errors

       The sem_init() function shall fail if:

       EINVAL The value argument exceeds {SEM_VALUE_MAX}.

       ENOSPC A  resource  required  to  initialize the semaphore has been exhausted, or the limit on semaphores
              ({SEM_NSEMS_MAX}) has been reached.

       EPERM  The process lacks appropriate privileges to initialize the semaphore.

       Thefollowingsectionsareinformative.

Examples

       None.

Future Directions

       None.

Name

       sem_init — initialize an unnamed semaphore

Prolog

       This  manual  page  is part of the POSIX Programmer's Manual.  The Linux implementation of this interface
       may differ (consult the corresponding Linux manual page for details of Linux behavior), or the  interface
       may not be implemented on Linux.

Rationale

       None.

Return Value

       Upon successful completion, the sem_init() function shall initialize the semaphore in sem and  return  0.
       Otherwise, it shall return -1 and set errno to indicate the error.

See Also

sem_destroy(), sem_post(), sem_timedwait(), sem_trywait()

       The Base Definitions volume of POSIX.1‐2017, <semaphore.h>

Synopsis

       #include <semaphore.h>

       int sem_init(sem_t *sem, int pshared, unsigned value);

See Also