Next: , Previous: Tuning lock elision, Up: Lock elision


34.4 Setting elision for individual pthread_mutex_t

Elision 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.