sem_init(3pthread)


sem_init -- initialize an unnamed semaphore

Synopsis

   cc [options] -Kthread file
   

#include <semaphore.h>

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

Description

sem_init initializes the unnamed semaphore sem. Following a successful call to sem_init, the semaphore may be used in subsequent calls to sem_wait, sem_trywait, sem_post, and sem_destroy. This semaphore remains usable until the semaphore is destroyed.

sem is a pointer to an unnamed semaphore to be initialized.

If pshared 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_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_trywait, sem_post, and sem_destroy operations.

value specifies the value of the initialized semaphore value must be greater than or equal to zero.

Return values

sem_init returns zero for success. Otherwise it returns -1 and sets errno to indicate the error.

Diagnostics

sem_init returns the following values if the corresponding condition is detected:

EINVAL
value exceeds SEM_VALUE_MAX or is less than zero.

Warnings

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

sem_init does not examine the sem argument before initializing it. If sem_init is called more than once for the same semaphore, it will overwrite its state. It is the user's responsibility to ensure that sem_init is only called once for each semaphore.

Standards compliance

The Single UNIX Specification, Version 2; The Open Group.

References

Intro(3pthread), sem_destroy(3pthread), sem_post(3pthread), sem_trywait(3pthread), sem_wait(3pthread), semaphore(4)
© 2004 The SCO Group, Inc. All rights reserved.
UnixWare 7 Release 7.1.4 - 25 April 2004