pthread_mutexattr_gettype(PTHREAD)
pthread_mutexattr_gettype, pthread_mutexattr_settype --
get, set, a mutex type
Synopsis
cc [options] -Kthread file
#include <pthread.h>
int pthread_mutexattr_gettype(pthread_mutexattr_t *attr, int *type);
int pthread_mutexattr_settype(pthread_mutexattr_t,*attr, int type);
Description
pthread_mutexattr_gettype
and pthread_mutexattr_settype
respectively get and set the mutex type attribute.
This attribute is set in the type parameter, and
the default value is PTHREAD_MUTEX_DEFAULT.
The type of mutex is contained in the type
attribute of the mutex attributes.
Valid mutex types include the following:
PTHREAD_MUTEX_NORMAL-
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.
PTHREAD_MUTEX_ERRORCHECK-
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 which
another thread has locked will return with
an error.
A thread attempting to unlock an unlocked
mutex will return with an error.
PTHREAD_MUTEX_RECURSIVE-
A thread attempting to relock this mutex
without first unlocking it will succeed
in locking the mutex.
The relocking deadlock which can occur
with mutexes of type PTHREAD_MUTEX_NORMAL
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 which
another thread has locked will return with
an error.
A thread attempting to unlock an unlocked
mutex will return with an error.
PTHREAD_MUTEX_DEFAULT-
This type of mutex behaves exactly as described for
PTHREAD_MUTEX_NORMAL, above.
An application should
not 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 happens, no other thread can satisfy
the condition of the predicate.
Return values
pthread_mutexattr_settype returns zero on success.
Otherwise, an error number is returned.
pthread_mutexattr_gettype returns zero on success
and stores the value of the type attribute
of attr into the object referenced by
the type parameter.
Otherwise, an error number is returned.
Diagnostics
pthread_gettype and
pthread_settype returns the following values
if the corresponding conditions are detected:
EINVAL-
The value type is invalid.
EINVAL-
The value specified by attr is invalid.
Standards compliance
The Single UNIX Specification, Version 2; The Open Group.
References
Intro(PTHREAD),
pthread(F),
pthread_cond_wait(PTHREAD),
pthread_mutex_init(PTHREAD),
pthread_mutex_lock(PTHREAD),
pthread_mutex_unlock(PTHREAD)
© 2005 The SCO Group, Inc. All rights reserved.
SCO OpenServer Release 6.0.0 - 01 June 2005