The sem_init() function is used to initialize the unnamed semaphore referred to by sem. The value of the initialized semaphore is value.
Following a successful call to sem_init(), the semaphore may be used in subsequent calls to sem_wait(3RT), sem_trywait(3RT), sem_post(3RT), and sem_destroy(3RT). This semaphore remains 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(3RT), sem_trywait(3RT), sem_post(3RT),
and sem_destroy(3RT) operations.
Only sem itself may be used for performing synchronization. The result of referring to copies of sem in calls to sem_wait(3RT), sem_trywait(3RT), sem_post(3RT), and sem_destroy(3RT), 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(3RT), sem_trywait(3RT), sem_post(3RT), and sem_destroy(3RT) 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.
|