Originální popis anglicky:
sem_init - initialize an unnamed semaphore (
REALTIME)
Návod, kniha: POSIX Programmer's Manual
#include <semaphore.h>
int sem_init(sem_t *
sem, int
pshared, unsigned
value);
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_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_trywait(),
sem_post(), and
sem_destroy() operations.
Only
sem itself may be used for performing synchronization. The result of
referring to copies of
sem in calls to
sem_wait(),
sem_trywait(),
sem_post(), and
sem_destroy() is
undefined.
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. The use of the semaphore by threads other
than those created in the same process is undefined.
Attempting to initialize an already initialized semaphore results in undefined
behavior.
Upon successful completion, the
sem_init() function shall initialize the
semaphore in
sem. Otherwise, it shall return -1 and set
errno to
indicate the error.
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 the appropriate privileges to initialize
the semaphore.
The following sections are informative.
None.
The
sem_init() function is part of the Semaphores option and need not be
available on all implementations.
Although this volume of IEEE Std 1003.1-2001 fails to specify a
successful return value, it is likely that a later version may require the
implementation to return a value of zero if the call to
sem_init() is
successful.
None.
sem_destroy() ,
sem_post() ,
sem_timedwait() ,
sem_trywait() ,
sem_wait() , the Base Definitions volume of
IEEE Std 1003.1-2001,
<semaphore.h>
Portions of this text are reprinted and reproduced in electronic form from IEEE
Std 1003.1, 2003 Edition, Standard for Information Technology -- Portable
Operating System Interface (POSIX), The Open Group Base Specifications Issue
6, Copyright (C) 2001-2003 by the Institute of Electrical and Electronics
Engineers, Inc and The Open Group. In the event of any discrepancy between
this version and the original IEEE and The Open Group Standard, the original
IEEE and The Open Group Standard is the referee document. The original
Standard can be obtained online at http://www.opengroup.org/unix/online.html
.