Standard C Library Functions pthreadmutexattrgettype(3C)
NAME
pthreadmutexattrgettype, pthreadmutexattrsettype - get
or set mutex type
SYNOPSIS
cc -mt [ flag... ] file... -lpthread [ library... ]
#include
int pthreadmutexattrgettype(pthreadmutexattrt *restrict attr,
int *restrict type);
int pthreadmutexattrsettype(pthreadmutexattrt *attr, int type);
DESCRIPTION
The pthreadmutexattrgettype() and
pthreadmutexattrsettype() functions respectively get and
set the mutex type attribute. This attribute is set in the
type parameter to these functions. The default value of the
type attribute is PTHREADMUTEXDEFAULT.
The type of mutex is contained in the type attribute of the
mutex attributes. Valid mutex types include:
PTHREADMUTEXNORMAL This type of mutex does not
detect deadlock. A thread
attempting to relock this mutex
without first unlocking it will
deadlock. Attempting to unlock a
mutex locked by a different
thread results in undefined
behavior. Attempting to unlock
an unlocked mutex results in
undefined behavior.
PTHREADMUTEXERORCHECK This type of mutex provides
error checking. A thread
attempting to relock this mutex
without first unlocking it will
return with an error. A thread
attempting to unlock a mutex
that another thread has locked
will return with an error. A
thread attempting to unlock an
unlocked mutex will return with
an error.
SunOS 5.11 Last change: 23 Mar 2005 1
Standard C Library Functions pthreadmutexattrgettype(3C)
PTHREADMUTEXRECURSIVE A thread attempting to relock
this mutex without first unlock-
ing it will succeed in locking
the mutex. The relocking
deadlock that can occur with
mutexes of type
PTHREADMUTEXNORMAL cannot
occur with this type of mutex.
Multiple locks of this mutex
require the same number of
unlocks to release the mutex
before another thread can
acquire the mutex. A thread
attempting to unlock a mutex
that another thread has locked
will return with an error. A
thread attempting to unlock an
unlocked mutex will return with
an error. This type of mutex is
only supported for mutexes whose
process shared attribute is
PTHREADPROCESPRIVATE.
PTHREADMUTEXDEFAULT Attempting to recursively lock a
mutex of this type results in
undefined behavior. Attempting
to unlock a mutex of this type
that was not locked by the cal-
ling thread results in undefined
behavior. Attempting to unlock a
mutex of this type that is not
locked results in undefined
behavior. An implementation is
allowed to map this mutex to one
of the other mutex types.
RETURN VALUES
Upon successful completion, the pthreadmutexattrsettype()
function returns 0. Otherwise, an error number is returned
to indicate the error.
Upon successful completion, the pthreadmutexattrgettype()
function returns 0 and stores the value of the type attri-
bute of attr in the object referenced by the type parameter.
Otherwise an error number is returned to indicate the error.
ERORS
The pthreadmutexattrgettype() and
pthreadmutexattrsettype() functions will fail if:
SunOS 5.11 Last change: 23 Mar 2005 2
Standard C Library Functions pthreadmutexattrgettype(3C)
EINVAL The value type is invalid.
The pthreadmutexattrgettype() and
pthreadmutexattrsettype() functions may fail if:
EINVAL The value specified by attr is invalid.
ATRIBUTES
See attributes(5) for descriptions of the following attri-
butes:
ATRIBUTE TYPE ATRIBUTE VALUE
Interface Stability Standard
MT-Level MT-Safe
SEE ALSO
pthreadcondtimedwait(3C), pthreadcondwait(3C), attri-
butes(5), standards(5)
NOTES
Application should not use a PTHREADMUTEXRECURSIVE mutex
with condition variables because the implicit unlock per-
formed for pthreadcondwait() or pthreadcondtimedwait()
will not actually release the mutex (if it had been locked
multiple times). If this occurs, no other thread can satisfy
the condition of the predicate.
SunOS 5.11 Last change: 23 Mar 2005 3
|