pthread_sleepon_signal()
QNX SDP8.0C Library ReferenceAPIDeveloper
Signal a sleeping thread
Synopsis:
#include <pthread.h>
int pthread_sleepon_signal(
const volatile void * addr );
Arguments:
- addr
- The handle that the threads are waiting on. The value of addr is typically a data structure that controls a resource.
Library:
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
Description:
The pthread_sleepon_signal() function unblocks the highest priority thread waiting on addr.
You should use pthread_sleepon_broadcast() or pthread_sleepon_signal(), depending on the task you're doing:
- Mapping a single predicate to one address
- Use pthread_sleepon_signal().
If you use pthread_sleepon_broadcast(), you must recheck the predicate and reblock if necessary. The first thread to wake up owns the lock; all others must go back to sleep.
If you use pthread_sleepon_signal(), you don't have to recheck the predicate. One thread owns the lock at a time.
- Mapping multiple predicates to one address
- You need to use pthread_sleepon_broadcast() to wake up all blocked threads.
You must recheck the predicates and reblock if necessary.
You should try to map only one predicate to one address.
Don't use pthread_sleepon_signal() in this case; it could result in a deadlock.
Returns:
- EOK
- Success.
- EINVAL
- Invalid sleepon address.
Classification:
Safety: | |
---|---|
Cancellation point | No |
Signal handler | Yes |
Thread | Yes |
Page updated: