The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Каталог документации / Раздел "Программирование, языки" / Оглавление документа
next up previous contents
Next: Запирание мьютекса. Up: Синхронизация потоков. Previous: Область видимости мьютекса.   Contents

Инициализация мьютекса.

Функция pthread_mutex_init() предназначена для инициализации мьютекса:

int pthread_mutex_init(pthread_mutex_t *mp,

    const pthread_mutexattr_t *mattr);

Здесь мьютекс, указанный mp, инициализируется значением по умолчанию, если mattr равен NULL, или определенными атрибутами, которые уже установлены с помощью pthread_mutexattr_init().

Захват через мьютекс не должен повторно инициализироваться или удаляться, пока другие потоки могут его использовать. Если мьютекс инициализируется повторно или удаляется, приложение должно убедиться, что в настоящее время этот мьютекс не используется. pthread_mutex_init() возвращает 0 после успешного завершения, или другое значение, если произошла ошибка. Пример вызова:

#include <pthread.h>

pthread_mutex_t mp = PTHREAD_MUTEX_INITIALIZER; 

pthread_mutexattr_t mattr; 

int ret; 

/* инициализация мьютекса значением по умолчанию */ 

ret = pthread_mutex_init(&mp, NULL);

Когда мьютекс инициализируется, он находится в открытом состоянии. Статически определенные мьютексы могут инициализироваться непосредственно значениями по умолчанию с помощью макроса PTHREAD_MUTEX_INITIALIZER. Пример инициализации:

/* инициализация атрибутов мьютекса по умолчанию*/ 

ret = pthread_mutexattr_init(&mattr);

/* смена значений mattr с помощью функций */

ret = pthread_mutexattr_*();

/* инициализация мьютекса произвольными значениями */

ret = pthread_mutex_init(&mp, &mattr);



2003-12-09



Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2022 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру