VMS Help  —  CRTL  sem_init
    Initializes an unnamed semaphore.

    This function is OpenVMS Alpha and Integrity servers only.

    Format

      #include  <semaphore.h>

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

1  –  Argument

 sem

    The location to receive the descriptor of the initialized
    semaphore.

 pshared

    A value indicating whether the semaphore should be sharable
    between the creating process and its descendants (nonzero value)
    or not (zero).

                                   NOTE

       The value for pshared must be zero between threads because
       this release does not support unnamed semaphores to be
       shared across processes.

 value

    The initial value to be given to the semaphore.

2  –  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.

3  –  Return Values

    0                  Successful completion.
    -1                 Indicates an error. The function sets errno to
                       one of the following values:

                       o  EINVAL - The value argument exceeds {SEM_
                          VALUE_MAX}.

                       o  ENOSYS - The function is not implemented.

                       o  EVMSERR - OpenVMS specific nontranslatable
                          error code.
Close Help