Multithreaded Programming Guide

pthread_mutexattr_init Syntax

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.