HP-UX Reference (11i v1 05/09) - 3 Library Functions N-Z (vol 7)

p
pthread_mutexattr_getpshared(3T) pthread_mutexattr_getpshared(3T)
(Pthread Library)
error. This type of mutex is useful for debugging.
PTHREAD_MUTEX_RECURSIVE
Deadlock cannot occur with this type of mutex. An owner field is maintained. A thread attempt-
ing to relock this mutex shall successfully lock the mutex. Multiple locks of this mutex shall
require the same number of unlocks to release the mutex before another thread can lock the
mutex. A thread attempting to unlock a mutex locked by a different thread shall return with an
error. A thread attempting to unlock an unlocked mutex shall return with an error.
PTHREAD_MUTEX_DEFAULT
Attempting to recursively lock a mutex of this type results in undefined behavior. Attempting to
unlock a mutex locked by a different thread results in undefined behavior. Attempting to unlock
an unlocked mutex results in undefined behavior. An implementation shall be allowed to map
this mutex to one of the other mutex types.
The default value of the type attribute is
PTHREAD_MUTEX_DEAFULT
.
pthread_mutexattr_settype()
is used to set the type attribute in attr. The new value of the type
attribute of attr is set to the value specified in the type parameter.
pthread_mutexattr_gettype()
retrieves the value of the type attribute from attr. The value of
the type attribute of attr is returned in the type parameter.
Never use a
PTHREAD_MUTEX_RECURSIVE
mutex with condition variables because the implicit unlock
performed for a
pthread_cond_wait()
or pthread_cond_timedwait() may not actually
release the mutex if it had been locked multiple times. If this situation happens, no other thread can
satisfy the condition of the predicate.
RETURN VALUE
Upon successful completion,
pthread_mutexattr_getpshared()
,
pthread_mutexattr_setpshared()
, pthread_mutexattr_gettype()
, and
pthread_mutexattr_settype()
return zero. Otherwise, an error number is returned to indicate
the error (the
errno variable is not set).
ERRORS
If any of the following occur, the pthread_mutexattr_getpshared()
and
pthread_mutexattr_setpshared()
functions return the corresponding error number:
[ENOSYS]
_POSIX_THREAD_PROCESS_SHARED
is not defined and these functions are not
supported.
For each of the following conditions, if the condition is detected, the
pthread_mutexattr_getpshared()
, pthread_mutexattr_setpshared()
,
pthread_mutexattr_gettype()
, and pthread_mutexattr_settype()
functions return the
corresponding error number:
[EINVAL] attr is not a valid mutex attributes object.
[EINVAL] The value specified by pshared or type is not a legal value. [EINVAL] The value
pshared or type points to an illegal address.
WARNINGS
If a mutex is created with the process-shared attribute defined as
PTHREAD_PROCESS_SHARED
, the
cooperating processes should have access to the memory in which the mutex is allocated.
AUTHOR
pthread_mutexattr_setpshared() and pthread_mutexattr_getpshared()
were derived
from the IEEE POSIX P1003.1c standard.
pthread_mutexattr_settype(), and pthread_mutexattr_gettype()
were developed by
X/Open.
SEE ALSO
pthread_create(3T), pthread_mutexattr_init(3T), pthread_mutex_init(3T).
STANDARDS CONFORMANCE
pthread_mutexattr_setpshared(): POSIX 1003.1c.
HP-UX 11i Version 1: September 2005 2 Hewlett-Packard Company Section 3731