Инициализировать мьютекс
#include <pthread.h>pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;int pthread_mutex_init( pthread_mutex_t *mutex,const pthread_mutexattr_t *attr );
pthread_mutex_t
, который необходимо инициализировать.NULL
, или указатель на объект pthread_mutexattr_t
, который указывает атрибуты, которые требуется использовать для мьютекса. Для получения дополнительной информации см. pthread_mutexattr_init().libc
Функция pthread_mutex_init() инициализирует мьютекс, используя атрибуты, указанные объектом атрибутов мьютекса attr. Если attr равен NULL
, то мьютекс инициализируется с атрибутами по умолчанию (см. pthread_mutexattr_init()). После инициализации мьютекс находится в разблокированном состоянии.
![]() | Необходимо выделять объекты синхронизации только в обычной памяти. На некоторых процессорах (например, на некоторых PPC) атомарные операции, такие как вызовы pthread_mutex_lock(), приведут к возникновению ошибки, если управляющая структура размещена в некэшированной памяти. |
Можно инициализировать статически выделенный мьютекс с атрибутами по умолчанию, назначив ему макрос PTHREAD_MUTEX_INITIALIZER
или PTHREAD_RMUTEX_INITIALIZER
(для рекурсивных мьютексов).
![]() | Чтобы уничтожить мьютекс, следует вызвать pthread_mutex_destroy(). После уничтожения мьютекса, не допускается его использование без повторной инициализации с помощью вызова pthread_mutex_init(). |
POSIX 1003.1 Threads
pthread_mutexattr_init(), pthread_mutex_destroy(), SyncTypeCreate()
Предыдущий раздел: Описание API системной библиотеки