NAME | SYNOPSIS | DESCRIPTION | RETURN VALUE | ERRORS | ATTRIBUTES
#include <pthread.h> pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;int pthread_mutex_init(pthread_mutex_t * mutex, const pthread_mutexattr_t * attr);
The pthread_mutex_init function initializes the mutex referenced by mutex with attributes obtained from attr . If attr is NULL, the default mutex attributes are used.
A mutex that is statically allocated may be initialized with the initializer macro PTHREAD_MUTEX_INITIALIZER. The effect is the same as dynamic initialization using pthread_mutex_init with attr equal to NULL, except that no error checks are performed.
The pthread_mutex_destroy function deletes the mutex designated by mutex . Deletion of a locked mutex results in undefined behavior.
The pthread_mutex_lock function locks the mutex referenced by mutex . If the mutex is already locked by another thread, the calling thread blocks until the mutex becomes available. The pthread_mutex_lock function returns with the mutex in the locked state. Calls to pthread_mutex_lock may not be nested; an attempt by a thread to lock the same mutex a second time will result in deadlock.
The pthread_mutex_trylock function is the same as pthread_mutex_lock except that if mutex is already locked (by any thread, including the current thread), the call returns immediately with an error code indicating failure.
The pthread_mutex_unlock function releases the mutex referenced by mutex . If the caller is not the thread which locked the mutex most recently, or if the mutex is not locked, the behavior is undefined. If there are threads blocked on the mutex, the one waiting the longest is awakened so that it may lock the mutex and return from its pthread_mutex_lock call.
Upon successful completion, all functions listed above return zero. Otherwise an error code is returned. (NOTE: These calls do not set errno .)
The mutex argument does not refer to a valid mutex. A pointer argument contains an address outside the current actor's address space.
pthread_mutex_trylock failed to lock the mutex because it was already locked.
See attributes(5) for descriptions of the following attributes:
ATTRIBUTE TYPE | ATTRIBUTE VALUE |
---|---|
Interface Stability | Evolving |
NAME | SYNOPSIS | DESCRIPTION | RETURN VALUE | ERRORS | ATTRIBUTES