Manual Pages for UNIX Darwin command on man sem_wait
MyWebUniversity

Manual Pages for UNIX Darwin command on man sem_wait

SEMWAIT(2) BSD System Calls Manual SEMWAIT(2)

NAME

sseemmttrryywwaaiitt,, sseemmwwaaiitt - lock a semaphore

SYNOPSIS

##iinncclluuddee <>

int sseemmttrryywwaaiitt(semt *sem); int sseemmwwaaiitt(semt *sem);

DESCRIPTION

The semaphore referenced by sem is locked. When calling sseemmwwaaiitt(), 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. Alterna-

tively, the sseemmttrryywwaaiitt() function will fail if the semaphore is already locked, rather than blocking on the semaphore. If successful (the lock was acquired), sseemmwwaaiitt() and sseemmttrryywwaaiitt() will

return 0. Otherwise, -1 is returned and errno is set, and the state of

the semaphore is unchanged. EERRRROORRSS sseemmwwaaiitt() and sseemmttrryywwaaiitt() 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. NNOOTTEESS 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

semopen(2), sempost(2), semctl(2), semget(2), semop(2) HISTORY

sseemmwwaaiitt() and sseemmttrryywwaaiitt() are specified in the POSIX Realtime Exten-

sion (1003.1b-1993/1003.1i-1995).

Darwin June 8, 2000 Darwin




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