int pthread_mutexattr_init(pthread_mutexattr_t *mattr);
#include <pthread.h> pthread_mutexattr_t mattr; int ret; /* initialize an attribute to default value */ ret = pthread_mutexattr_init(&mattr);
mattr is an opaque
type
that contains a system-allocated attribute object. See Table 4–2 for information about the attributes in the mattr object.
Before a mutex attribute object can be reinitialized, the object must first be destroyed by a call to pthread_mutexattr_destroy(3C). The pthread_mutexattr_init() call results in the allocation of an opaque object. If the object is not destroyed, a memory leak results.
Table 4–2 Default Attribute Values for mattr
Attribute |
Value |
Result |
---|---|---|
pshared |
PTHREAD_PROCESS_PRIVATE |
The initialized mutex can be used within a process. Only those threads created by the same process can operate on the mutex. |
type |
PTHREAD_MUTEX_DEFAULT |
The Solaris Pthreads implementation maps PTHREAD_MUTEX_DEFAULT to PTHREAD_MUTEX_NORMAL, which does not detect deadlock. |
protocol |
PTHREAD_PRIO_NONE |
Thread priority and scheduling are not affected by the priority of the mutex owned by the thread. |
prioceiling |
– |
The prioceiling value is drawn from the existing priority range for the SCHED_FIFO policy, as returned by the sched_get_priority_min() and sched_get_priority_max() functions. This priority range is determined by the Solaris version on which the mutex is created. |
robustness |
PTHREAD_MUTEX_STALLED_NP |
When the owner of a mutex dies, all future calls to pthread_mutex_lock() for this mutex will be blocked from progress. |