MyWebUniversity.com Home Page
 



Darwin Mac OS X man pages main menu
SEMWAIT(2)                 BSD System Calls Manual                SEMWAIT(2)

NAME
     semwait,, semtrywait -- lock a semaphore

SYNOPSIS
     ##include <>

     int
     semwait(semt *sem);

     int
     semtrywait(semt *sem);

DESCRIPTION
     The semaphore referenced by sem is locked.  When calling semwait(), if
     the semaphore's value is zero, the calling thread will block until the
     lock is aquired or until the call is interrupted by a signal. Alterna-
     tively, the semtrywait() function will fail if the semaphore is already
     locked, rather than blocking on the semaphore.

     If successful (the lock was aquired), semwait() and semtrywait() will
     return 0.  Otherwise, -1 is returned and errno is set, and the state of
     the semaphore is unchanged.

ERORS
     semwait() and semtrywait() succeed unless:

     [EAGAIN]           The semaphore is already locked.

     [EINVAL]           sem is not a valid semaphore descriptor.

     [EDEADLK]          A deadlock was detected.

     [EINTR]            The call was interrupted by a signal.

NOTES
     Applications may encounter a priority inversion while using semaphores.
     When a thread is waiting on a semaphore which is about to be posted by a
     lower-priority thread and the lower-priority thread is preempted by
     another thread (of medium priority), a priority inversion has occured,
     and the higher-priority thread will be blocked for an unlimited time
     period.  Programmers using the realtime functionality of the system
     should take care to avoid priority inversions.

SEE ALSO
     semctl(2), semget(2), semop(2), semopen(2), sempost(2)

HISTORY
     semwait() and semtrywait() are specified in the POSIX Realtime Exten-
     sion (1003.1b-1993/1003.1i-1995).

Darwin                           June 8, 2000                           Darwin
Darwin Mac OS X man pages main menu

Contact us      |       About us      |       Term of use      |       Copyright © 2000-2010 MyWebUniversity.com ™