This manual page is part of Xcode Tools version 3.2

To obtain these tools:

If you are running a version of Xcode Tools other than 3.2, view the documentation locally:

  • In Xcode

  • In Terminal, using the man(1) command

Reading manual pages

Manual pages are intended as a quick reference for people who already understand a technology.

  • For more information about the manual page format, see the manual page for manpages(5).

  • For more information about this technology, look for other documentation in the Apple Reference Library.

  • For general information about writing shell scripts, read Shell Scripting Primer.



SEM_WAIT(2)                                BSD System Calls Manual                               SEM_WAIT(2)

NAME
     sem_trywait, sem_wait -- lock a semaphore

SYNOPSIS
     #include <semaphore.h>

     int
     sem_trywait(sem_t *sem);

     int
     sem_wait(sem_t *sem);

DESCRIPTION
     The semaphore referenced by sem is locked.  When calling sem_wait(), if the semaphore's value is zero,
     the calling thread will block until the lock is acquired or until the call is interrupted by a signal.
     Alternatively, the sem_trywait() function will fail if the semaphore is already locked, rather than
     blocking on the semaphore.

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

ERRORS
     sem_wait() and sem_trywait() succeed unless:

     [EAGAIN]           The semaphore is already locked.

     [EDEADLK]          A deadlock was detected.

     [EINTR]            The call was interrupted by a signal.

     [EINVAL]           sem is not a valid semaphore descriptor.

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 pre-empted preempted
     empted by another thread (of medium priority), a priority inversion has occured, and the higher-prior-ity higher-priority
     ity 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
     sem_open(2), sem_post(2), semctl(2), semget(2), semop(2)

HISTORY
     sem_wait() and sem_trywait() are specified in the POSIX Realtime Extension (1003.1b-1993/1003.1i-1995).

Darwin                                          June 8, 2000                                          Darwin

Reporting Problems

The way to report a problem with this manual page depends on the type of problem:

Content errors
Report errors in the content of this documentation with the feedback links below.
Bug reports
Report bugs in the functionality of the described tool or API through Bug Reporter.
Formatting problems
Report formatting mistakes in the online version of these pages with the feedback links below.