Составители:
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
Страницы
- « первая
- ‹ предыдущая
- …
- 26
- 27
- 28
- 29
- 30
- …
- следующая ›
- последняя »
