Loading...
Searching...
No Matches
Reader/Writer Lock Routines
Apache Portability Runtime library
Collaboration diagram for Reader/Writer Lock Routines:

## Typedefs

typedef struct apr_thread_rwlock_t | apr_thread_rwlock_t

## Functions

apr_status_t | apr_thread_rwlock_create (apr_thread_rwlock_t **rwlock, apr_pool_t *pool)
apr_status_t | apr_thread_rwlock_rdlock (apr_thread_rwlock_t *rwlock)
apr_status_t | apr_thread_rwlock_tryrdlock (apr_thread_rwlock_t *rwlock)
apr_status_t | apr_thread_rwlock_wrlock (apr_thread_rwlock_t *rwlock)
apr_status_t | apr_thread_rwlock_trywrlock (apr_thread_rwlock_t *rwlock)
apr_status_t | apr_thread_rwlock_unlock (apr_thread_rwlock_t *rwlock)
apr_status_t | apr_thread_rwlock_destroy (apr_thread_rwlock_t *rwlock)
apr_pool_t * | apr_thread_rwlock_pool_get (const apr_thread_rwlock_t *thethread_rwlock)

## Detailed Description

## Typedef Documentation

## apr_thread_rwlock_t

typedef struct apr_thread_rwlock_t apr_thread_rwlock_t

Opaque read-write thread-safe lock.

## Function Documentation

## apr_thread_rwlock_create()

apr_status_t apr_thread_rwlock_create | ( | apr_thread_rwlock_t ** | rwlock,
|  | apr_pool_t * | pool
| ) |  |

Note: The following operations have undefined results: unlocking a read-write lock which is not locked in the calling thread; write locking a read-write lock which is already locked by the calling thread; destroying a read-write lock more than once; clearing or destroying the pool from which a locked read-write lock is allocated. Create and initialize a read-write lock that can be used to synchronize threads.

Parameters

  rwlock | the memory address where the newly created readwrite lock will be stored.
  pool | the pool from which to allocate the mutex.

## apr_thread_rwlock_destroy()

apr_status_t apr_thread_rwlock_destroy | ( | apr_thread_rwlock_t * | rwlock | ) |

Destroy the read-write lock and free the associated memory.

Parameters

  rwlock | the rwlock to destroy.

## apr_thread_rwlock_pool_get()

apr_pool_t * apr_thread_rwlock_pool_get | ( | const apr_thread_rwlock_t * | thethread_rwlock | ) |

Get the pool used by this thread_rwlock.

Returns
  apr_pool_t the pool

## apr_thread_rwlock_rdlock()

apr_status_t apr_thread_rwlock_rdlock | ( | apr_thread_rwlock_t * | rwlock | ) |

Acquire a shared-read lock on the given read-write lock. This will allow multiple threads to enter the same critical section while they have acquired the read lock.

Parameters

  rwlock | the read-write lock on which to acquire the shared read.

## apr_thread_rwlock_tryrdlock()

apr_status_t apr_thread_rwlock_tryrdlock | ( | apr_thread_rwlock_t * | rwlock | ) |

Attempt to acquire the shared-read lock on the given read-write lock. This is the same as apr_thread_rwlock_rdlock(), only that the function fails if there is another thread holding the write lock, or if there are any write threads blocking on the lock. If the function fails for this case, APR_EBUSY will be returned. Note: it is important that the APR_STATUS_IS_EBUSY(s) macro be used to determine if the return value was APR_EBUSY, for portability reasons.

Parameters

  rwlock | the rwlock on which to attempt the shared read.

## apr_thread_rwlock_trywrlock()

apr_status_t apr_thread_rwlock_trywrlock | ( | apr_thread_rwlock_t * | rwlock | ) |

Attempt to acquire the exclusive-write lock on the given read-write lock. This is the same as apr_thread_rwlock_wrlock(), only that the function fails if there is any other thread holding the lock (for reading or writing), in which case the function will return APR_EBUSY. Note: it is important that the APR_STATUS_IS_EBUSY(s) macro be used to determine if the return value was APR_EBUSY, for portability reasons.

Parameters

  rwlock | the rwlock on which to attempt the exclusive write.

## apr_thread_rwlock_unlock()

apr_status_t apr_thread_rwlock_unlock | ( | apr_thread_rwlock_t * | rwlock | ) |

Release either the read or write lock currently held by the calling thread associated with the given read-write lock.

Parameters

  rwlock | the read-write lock to be released (unlocked).

## apr_thread_rwlock_wrlock()

apr_status_t apr_thread_rwlock_wrlock | ( | apr_thread_rwlock_t * | rwlock | ) |

Acquire an exclusive-write lock on the given read-write lock. This will allow only one single thread to enter the critical sections. If there are any threads currently holding the read-lock, this thread is put to sleep until it can have exclusive access to the lock.

Parameters

  rwlock | the read-write lock on which to acquire the exclusive write.