Функция pthread_mutex_init() предназначена для инициализации мьютекса:
const pthread_mutexattr_t *mattr);
Блокировка через мьютекс не должна повторно инициализироваться или удаляться, пока другие потоки могут его использовать. Если мьютекс инициализируется повторно или удаляется, приложение должно убедиться, что в настоящее время этот мьютекс не используется; pthread_mutex_init() возвращает 0 - после успешного завершения - или другое значение, если произошла ошибка. Пример вызова:
pthread_mutex_t mp = PTHREAD_MUTEX_INITIALIZER;
pthread_mutexattr_t mattr;
int ret;
/* инициализация мьютекса значением по умолчанию */
ret = pthread_mutex_init(&mp, NULL);
ret = pthread_mutexattr_init(&mattr);
/* смена значений mattr с помощью функций */
ret = pthread_mutexattr_*();
/* инициализация мьютекса произвольными значениями */
ret = pthread_mutex_init(&mp, &mattr);