Книга: Основы программирования в Linux
Синхронизация
В предыдущем разделе вы видели, что два потока выполняются одновременно, но метод переключения между ними топорный и очень неэффективный. К счастью, существует ряд функций, специально разработанных для предоставления лучших способов управления исполнением потоков и доступа к важным фрагментам кода.
В этом разделе мы рассмотрим два основных метода: семафоры, действующие как сторожа, охраняющие фрагменты кода, и мьютексы или исключающие семафоры, действующие как устройство взаимного исключения (отсюда и имя — исключающий семафор) для защиты фрагментов программного кода. На самом деле эти методы похожи, и один может быть описан в терминах другого. Тем не менее существуют ситуации, в которых семантика проблемы делает один более выразительным, чем другой. Например, управление доступом к некоторой области совместно используемой памяти, к которой может обращаться только один поток в каждый момент времени, более естественным кажется исключающий семафор или мьютекс. Для управления доступом к ряду идентичных объектов в целом, например, предоставление потоку одной телефонной линии из набора, включающего пять доступных линий, больше подходит семафор. Какой метод выберите вы, зависит от личных предпочтений и наиболее подходящего для вашей программы алгоритма.
- ЧАСТЬ 3 СИНХРОНИЗАЦИЯ
- 2.15. Синхронизация данных
- Синхронизация с помощью мьютексов
- Синхронизация и параллелизм
- Синхронизация с помощью семафоров
- 1 Синхронизация данных
- Подключение сетевых дисков и синхронизация времени при регистрации пользователей
- ГЛАВА 8 Синхронизация потоков
- Синхронизация куч
- 13.2.2. Синхронизация доступа к ресурсам (mutex.rb)
- 12. Лекция: Потоки выполнения. Синхронизация
- Синхронизация содержимого списка SharePoint Задачи