Copyright Digital Equipment Corp. All rights reserved.

Description

   The sem_init function creates a new counting semaphore with a
   specific value. A semaphore is used to limit access to a critical
   resource. When a process requires access to the resource without
   interference from other processes, it attempts to establish
   a connection with the associated semaphore. If the semaphore
   value is greater than zero, the connection is established and the
   semaphore value is decremented by one. If the semaphore value is
   less than or equal to zero, the process attempting to access the
   resource is blocked and must wait for another process to release
   the semaphore and increment the semaphore value.

   The sem_init function establishes a connection between an
   unnamed semaphore and a process; the sem_wait and sem_trywait
   functions lock the semaphore; and the sem_post function unlocks
   the semaphore. Use the sem_destroy function to deallocate system
   resources allocated to the process for use with the semaphore.
   You can use the sem_getvalue function to obtain the value of a
   semaphore.

   A semaphore created by a call to the sem_init function remains
   valid until the semaphore is removed by a call to the sem_destroy
   function.