Рабочие листы
к вашим урокам
Скачать
1 слайд
Атрибуты мутекса
2 слайд
pthread_mutexattr_t
#include <pthread.h>
int pthread_mutexattr_init(
pthread_mutexattr_t * attr);
int pthread_mutexattr_destroy(
pthread_mutexattr_t *attr);
3 слайд
Использование
#include <pthread.h>
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);
4 слайд
Операции над pthread_mutexattr_t
pthread_mutexattr_get/settype
pthread_mutexattr_get/setpshared
pthread_mutexattr_get/setprotocol
pthread_mutexattr_get/setprioceiling
pthread_mutexattr_get/setrobust_np
5 слайд
pthread_mutexattr_get/settype
#include <pthread.h>
int pthread_mutexattr_gettype(
pthread_mutexattr_t *restrict attr,
int *restrict type);
int pthread_mutexattr_settype(
pthread_mutexattr_t *_attr,
int type);
6 слайд
Типы
PTHREAD_MUTEX_NORMAL
PTHREAD_MUTEX_ERRORCHECK
PTHREAD_MUTEX_RECURSIVE
PTHREAD_MUTEX_DEFAULT
7 слайд
pthread_mutexattr_get/setpshared
#include <pthread.h>
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
8 слайд
pthread_mutexattr_get/setrobust_np
#include <pthread.h>
int pthread_mutexattr_getrobust_np(
const pthread_mutexattr_t *attr,
int *robustness);
int pthread_mutexattr_setrobust_np(
pthread_mutexattr_t *attr,
int robustness);
9 слайд
Robustness
PTHREAD_MUTEX_ROBUST_NP
PTHREAD_MUTEX_STALLED_NP
10 слайд
Что означает ROBUST
Если процесс, удерживающий мутекс, умер, ресурс, защищенный этим мутексом, остается в несогласованном состоянии
Попытки его захватить возвращают EOWNERDEAD
Если ресурс удалось восстановить, следует вызвать функцию pthread_mutex_consistent_np
11 слайд
pthread_mutex_consistent_np
int pthread_mutex_consistent_np(
pthread_mutex_t *mutex);
12 слайд
pthread_mutexattr_get/setprotocol
#include <pthread.h>
int pthread_mutexattr_getprotocol(
const pthread_mutexattr_t *restrict attr,
int *restrict protocol);
int pthread_mutexattr_setprotocol(
pthread_mutexattr_t *attr,
int protocol);
13 слайд
Протоколы
PTHREAD_PRIO_NONE,
PTHREAD_PRIO_INHERIT,
PTHREAD_PRIO_PROTECT
14 слайд
Инверсия приоритета
INHERIT – наследование приоритета
Нить, удерживающая мутекс, исполняется с приоритетом, наивысшим среди всех нитей, ждущих этого мутекса (включая себя)
15 слайд
Инверсия приоритета
PROTECT – потолок приоритета (priority ceiling)
Нить, удерживающая мутекс, исполняется с наивысшим приоритетом из всех нитей, которые могут удерживать этот мутекс.
16 слайд
pthread_mutexattr_get/setprioceiling
#include <pthread.h>
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);
Рабочие листы
к вашим урокам
Скачать
6 666 396 материалов в базе
Настоящий материал опубликован пользователем Шестернина Алена Сергеевна. Инфоурок является информационным посредником и предоставляет пользователям возможность размещать на сайте методические материалы. Всю ответственность за опубликованные материалы, содержащиеся в них сведения, а также за соблюдение авторских прав несут пользователи, загрузившие материал на сайт
Если Вы считаете, что материал нарушает авторские права либо по каким-то другим причинам должен быть удален с сайта, Вы можете оставить жалобу на материал.
Удалить материалВаша скидка на курсы
40%Курс профессиональной переподготовки
500/1000 ч.
Курс профессиональной переподготовки
600 ч.
Курс профессиональной переподготовки
300/600 ч.
Курс повышения квалификации
72/180 ч.
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.