|apr_status_t||apr_thread_mutex_create (apr_thread_mutex_t **mutex, unsigned int flags, apr_pool_t *pool)|
|apr_status_t||apr_thread_mutex_lock (apr_thread_mutex_t *mutex)|
|apr_status_t||apr_thread_mutex_trylock (apr_thread_mutex_t *mutex)|
|apr_status_t||apr_thread_mutex_unlock (apr_thread_mutex_t *mutex)|
|apr_status_t||apr_thread_mutex_destroy (apr_thread_mutex_t *mutex)|
|apr_pool_t *||apr_thread_mutex_pool_get (const apr_thread_mutex_t *thethread_mutex)|
|#define APR_THREAD_MUTEX_DEFAULT 0x0|
platform-optimal lock behavior
|#define APR_THREAD_MUTEX_NESTED 0x1|
enable nested (recursive) locks
|#define APR_THREAD_MUTEX_UNNESTED 0x2|
disable nested locks
|apr_status_t apr_thread_mutex_create||(||apr_thread_mutex_t **||mutex,|
Create and initialize a mutex that can be used to synchronize threads.
|mutex||the memory address where the newly created mutex will be stored.|
|flags||Or'ed value of: |
APR_THREAD_MUTEX_DEFAULT platform-optimal lock behavior. APR_THREAD_MUTEX_NESTED enable nested (recursive) locks. APR_THREAD_MUTEX_UNNESTED disable nested locks (non-recursive).
|pool||the pool from which to allocate the mutex.|
Destroy the mutex and free the memory associated with the lock.
|mutex||the mutex to destroy.|
Acquire the lock for the given mutex. If the mutex is already locked, the current thread will be put to sleep until the lock becomes available.
|mutex||the mutex on which to acquire the lock.|
Get the pool used by this thread_mutex.
Attempt to acquire the lock for the given mutex. If the mutex has already been acquired, the call returns immediately with 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.
|mutex||the mutex on which to attempt the lock acquiring.|
Release the lock for the given mutex.
|mutex||the mutex from which to release the lock.|