Next: Setting <code>pthread_mutex_t</code> elision using environment variables, Previous: Tuning lock elision, Up: Lock elision
pthread_mutex_tElision can be explicitly disabled or enabled for each pthread_mutex_t in the program.
This overrides any other defaults set by environment variables for this lock.
pthrex_mutex_t Initializers for using in variable initializations.
/* Disable lock elision for mylock */
pthread_mutex_t mylock = PTHREAD_MUTEX_INIT_NP(PTHREAD_MUTEX_TIMED_NP|PTHREAD_MUTEX_ELISION_NP);
The lock type can also be set at runtime using pthread_mutexattr_settype and pthread_mutex_init.
/* Force lock elision for a dynamically allocated mutex */
pthread_mutexattr_t attr;
pthread_mutexattr_init (&attr);
pthread_mutexattr_settype (&attr, PTHREAD_MUTEX_TIMED_NP|PTHREAD_MUTEX_ELISION_NP);
pthread_mutex_init (&object->mylock, &attr);
pthread_mutex_gettype will return additional flags too.