pthread_rwlock_rdlock()

QNX SDP8.0C Library ReferenceAPIDeveloper

Acquire a shared (read) lock on a read-write lock

Synopsis:

#include <pthread.h>

int pthread_rwlock_rdlock( pthread_rwlock_t* rwl );

Arguments:

rwl
A pointer to a pthread_rwlock_t object that you want to lock for reading.

Library:

libc

Use the -l c option to qcc to link against this library. This library is usually included automatically.

Description:

The pthread_rwlock_rdlock() function acquires a shared (read) lock on the read-write lock referenced by rwl. If the read-write lock is already exclusively locked (i.e., locked for writing) by another thread, the calling thread blocks until the exclusive lock is released. If the calling thread has already exclusively locked the lock, the function call fails. If another thread at the same or higher priority is currently waiting to acquire the read-write lock for writing, pthread_rwlock_rdlock() blocks.

If a signal is delivered to a thread waiting to lock a read-write lock, it will resume waiting for the lock after returning from the signal handler.

A thread may hold several shared (read) locks on the same read-write lock; it must call pthread_rwlock_unlock() multiple times to release the read-write lock.

CAUTION:
If a thread attempts to recursively acquire the lock for reading while another thread at an equal or higher priority is trying to acquire it for writing, this causes deadlock. It is up to the client to avoid or handle this situation.

Returns:

EOK
Success.
EDEADLK
The calling thread already has an exclusive lock for rwl.
EFAULT
A fault occurred when the kernel tried to access rwl.
EINVAL
The read-write lock rwl is invalid.

Examples:

See An example of synchronization in the Processes and Threads chapter of Getting Started with the QNX OS.

Classification:

POSIX 1003.1

Safety:
Cancellation pointYes
Signal handlerYes
ThreadYes
Page updated: