Атрибуты мутекса. pthread_mutexattr_t #include int pthread_mutexattr_init( pthread_mutexattr_t * attr); int pthread_mutexattr_destroy( pthread_mutexattr_t.

Презентация:



Advertisements
Похожие презентации
Мутексы Программирование с использованием POSIX thread library.
Advertisements

POSIX Threads. Общая модель Программа Общая память Поток 1 CPU Поток 2 Поток N Потоки – наборы инструкций, исполняющиеся на CPU. Все потоки одной программы.
Другие примитивы синхронизации Программирование с использованием POSIX thread library.
Система реального времени QNX/Neutrino (QNX6). QNX Микpоядеpная Cетевая Мyльтизадачная Многопользовательcкая.
Блокировки чтения-записи Введение Получение и сброс блокировки чтения-записи Атрибуты блокировки чтения-записи Реализация Отмена выполнения потоков Пример.
Атрибуты потоков Атрибуты являются способом определить поведение потока, отличное от поведения по умолчанию. При создании потока с помощью pthread_create()
POSIX Threads & OpenMP Общая память Сергей Петрович Нечаев, Сибирский Суперкомпьютерный центр.
Создание и завершение нитей Программирование с использованием POSIX thread library Иртегов Д.В. Учебное пособие подготовлено по заказу и при.
Разработка библиотеки нитей POSIX реального времени Магистерская диссертация Студент: Фёдоров Александр, 418 гр. Научный руководитель: Гилязов С.С.
Многопоточное программирование. Виды параллелизма. Общая память Распределенная память.
Семафоры-счетчики POSIX Программирование с использованием POSIX thread library.
Интернет Университет Суперкомпьютерных технологий Конструкции для синхронизации нитей Учебный курс Параллельное программирование с OpenMP Бахтин В.А.,
Многопоточное программирование в OpenMP Киреев Сергей ИВМиМГ.
POSIX Threads МО ВВС ИВМ и МГ СО РАН Городничев Максим Александрович.
Параллельное программирование с использованием технологии OpenMP Аксёнов Сергей Владимирович к.т.н., доцент каф.ОСУ ТПУ Лекция 3 Томский политехнический.
OpenMP. Различие между тредами и процессами ПроцессыТреды.
# include #include #include #include # include #include # include #include #include #include #include # include #include #include #include.
Лекция 3. Введение в C++ Примеры взяты из книги Брюса Эккеля Думаем на С++
Посыпкин М.А. (С) Многопоточное программирование.
Основы информатики Классы Заикин Олег Сергеевич zaikin.all24.org
Транксрипт:

Атрибуты мутекса

pthread_mutexattr_t #include int pthread_mutexattr_init( pthread_mutexattr_t * attr); int pthread_mutexattr_destroy( pthread_mutexattr_t *attr);

Использование #include int pthread_mutex_init( pthread_mutex_t *restrict mutex, const pthread_mutexattr_t *restrict attr); Или pthread_mutex_t mutex= PTHREAD_MUTEX_INITIALIZER; int pthread_mutex_destroy(pthread_mutex_t *mutex);

Операции над pthread_mutexattr_t pthread_mutexattr_get/settype pthread_mutexattr_get/setpshared pthread_mutexattr_get/setprotocol pthread_mutexattr_get/setprioceiling pthread_mutexattr_get/setrobust_np

pthread_mutexattr_get/settype #include int pthread_mutexattr_gettype( pthread_mutexattr_t *restrict attr, int *restrict type); int pthread_mutexattr_settype( pthread_mutexattr_t *_attr, int type);

Типы PTHREAD_MUTEX_NORMAL PTHREAD_MUTEX_ERRORCHECK PTHREAD_MUTEX_RECURSIVE PTHREAD_MUTEX_DEFAULT

pthread_mutexattr_get/setpshared #include int pthread_mutexattr_getpshared( const pthread_mutexattr_t *restrict attr, int *restrict pshared); int pthread_mutexattr_setpshared( pthread_mutexattr_t * attr, int pshared); PTHREAD_PROCESS_SHARED PTHREAD_PROCESS_PRIVATE

pthread_mutexattr_get/setrobust_np #include int pthread_mutexattr_getrobust_np( const pthread_mutexattr_t *attr, int *robustness); int pthread_mutexattr_setrobust_np( pthread_mutexattr_t *attr, int robustness);

Robustness PTHREAD_MUTEX_ROBUST_NP PTHREAD_MUTEX_STALLED_NP

Что означает ROBUST Если процесс, удерживающий мутекс, умер, ресурс, защищенный этим мутексом, остается в несогласованном состоянии Попытки его захватить возвращают EOWNERDEAD Если ресурс удалось восстановить, следует вызвать функцию pthread_mutex_consistent_np

pthread_mutex_consistent_np int pthread_mutex_consistent_np( pthread_mutex_t *mutex);

pthread_mutexattr_get/setprotocol #include int pthread_mutexattr_getprotocol( const pthread_mutexattr_t *restrict attr, int *restrict protocol); int pthread_mutexattr_setprotocol( pthread_mutexattr_t *attr, int protocol);

Протоколы PTHREAD_PRIO_NONE, PTHREAD_PRIO_INHERIT, PTHREAD_PRIO_PROTECT

Инверсия приоритета INHERIT – наследование приоритета Нить, удерживающая мутекс, исполняется с приоритетом, наивысшим среди всех нитей, ждущих этого мутекса (включая себя)

Инверсия приоритета PROTECT – потолок приоритета (priority ceiling) Нить, удерживающая мутекс, исполняется с наивысшим приоритетом из всех нитей, которые могут удерживать этот мутекс.

pthread_mutexattr_get/setprioceiling #include int pthread_mutexattr_getprioceiling( const pthread_mutexattr_t *restrict attr, int *restrict prioceiling); int pthread_mutexattr_setprioceiling( pthread_mutexattr_t *attr, int prioceiling, int *oldceiling);