Синхронизация и взаимодействие программных потоков в операционной среде реального времени. Дорогов А.Ю. - 28 стр.

UptoLike

Составители: 

28
По сравнению с другими механизмами синхронизации семафоры бо-
лее безопасны в асинхронных приложениях. Другое полезное свойство се-
мафоров в том, что стандартом POSIX они определены не только для син-
хронизации потоков в пределах одного процесса, но и для синхронизации
потоков различных процессов.
Таблица 2.5
Функция Описание
sem_init() Инициализировать объект семафор
int sem_post() Увеличить текущий счетчик
int sem_wait() Уменьшить текущий счетчик
sem_trywait() Уменьшить текущий счетчик, если его значение больше нуля
sem_destroy() Уничтожить семафор
Существуют также именованные семафоры, которые используются
при взаимодействиях через сеть. В табл. 2.5 представлен полный набор
функций семафоров.
2.8. Блокировки чтения/записи
Блокировки чтения/записи используются, когда область данных дос-
тупна нескольким потокам по чтению и одному потоку по записи. Эта ситуа-
ция возникает достаточно часто при совместном использовании структуры
данных группой потоков. Иначе этот механизм называется «много читате-
лей, один писатель». Поскольку считывание области данныхнеразру-
шающая операция, любое число потоков может считывать данные (даже
если ту же часть данных считывает другой поток). Принципиально важным
моментом здесь является то, что никто не должен производить запись в об-
Thread 1
Thread 2
Thread 3
Rwlock
Thread 1
Thread 2
Thread 3
Thread 4
Thread 4
Blocked
Running
Running
Running
rdlock
rdlock
rdlock
wrlock
Рис. 2.5