Опубликован: 06.12.2004 | Доступ: свободный | Студентов: 1182 / 144 | Оценка: 4.76 / 4.29 | Длительность: 20:58:00
ISBN: 978-5-9556-0021-5
Лекция 2:

Средства синхронизации потоков управления

Аннотация: Анализируются основные идеи, понятия и объекты, обслуживающие синхронизацию потоков управления. Среди механизмов синхронизации выделяются мьютексы, переменные условия, блокировки чтение-запись, спин-блокировки и барьеры.
Ключевые слова: ПО, поток управления, общее адресное пространство, средство синхронизации, POSIX, мьютекс, переменная условия, блокировка чтение-запись, спин-блокировка, барьер, разделяемые данные, mutual, захват мьютекса, владелец мьютекса, предикат, блокирование потока управления, читатель, писатель, доступ на чтение, доступ на запись, низкоуровневое средство синхронизации, упорядочение доступа, синхронизация, критический интервал, множества, атрибут, атрибутный объект, инициализация мьютекса, разрушение мьютекса, освобождение мьютекса, опрос атрибутов мьютекса, установка атрибутов мьютекса, атрибут мьютекса, инициализация атрибутного объекта мьютекса, разрушение атрибутного объекта мьютекса, опрос атрибутов мьютекса в атрибутных объектах, установка атрибутов мьютекса в атрибутных объектах, инициализация статически описанных мьютексов, равенство, тип мьютекса, верхняя грань приоритетов выполнения, протокол мьютекса, признак использования несколькими процессами, идентификатор, тупиковая ситуация, мьютекс с выявлением ошибочных ситуаций, мьютекс со счетчиком, значение, инверсия приоритетов, политика планирования, доступ, память, функция, код ошибки, время ожидания, функция обработки сигнала, счетчик, динамическое выделение памяти, заголовочный файл, список, пул, программа, разделяемая переменная, цикла, разблокирование потоков управления, блокированных на переменной условия, семафор, корректность, анализ, операции, инициализация переменной условия, разрушение переменной условия, инициализация атрибутного объекта переменной условия, разрушение атрибутного объекта переменной условия, опрос атрибутов переменной условия в атрибутных объектах, установка атрибутов переменной условия в атрибутных объектах, идентификатор часов реального времени, mutex, ложное разблокирование, контроль, аргумент, интервал, точка терминирования, обработчик завершения, место, предсказуемость, планировщик , задача об обедающих философах, очередь, интеллектуальное средство синхронизации, файловая система, подпрофиль, системы реального времени, установка блокировки чтение-запись на чтение, установка блокировки чтение-запись на запись, снятие блокировки чтение-запись, инициализация атрибутного объекта блокировки чтение-запись, разрушение атрибутного объекта блокировки чтение-запись, взаимодействие читателей и писателей, установка блокировки чтение-запись на чтение с ограниченным ожиданием, функции для работы со списками в многопотоковой среде, файл, тестовая программа, приостановка выполнения, статус завершения, многопроцессорная конфигурация с разделяемой памятью, атомарно устанавливаемое булево значение, установка спин-блокировки, активное ожидание, процессор, расходы, переключение контекстов, приложение, инициализация спин-блокировки, разрушение спин-блокировки, снятие спин-блокировки, распределенные вычисления, многопроцессорная конфигурация, точка сбора, частичный результат, инициализация барьера, разрушение барьера, синхронизация на барьере, инициализация атрибутного объекта барьера, разрушение атрибутного объекта барьера, опрос атрибутов барьера в атрибутных объектах, установка атрибутов барьера в атрибутных объектах, count, именованная константа, объединительные действия, деятельность, длительность ожидания

Особенности синхронизации потоков управления

По сравнению с процессами, потоки управления характеризуются двумя особенностями:

  • на порядок меньшими накладными расходами на обслуживание;
  • существенно более тесным взаимодействием в общем адресном пространстве.

Очевидно, чтобы быть практически полезными, средства синхронизации, специально ориентированные на потоки управления, должны быть оптимизированы с учетом обеих отмеченных особенностей.

К числу таких средств, присутствующих в стандарте POSIX-2001, принадлежат мьютексы, переменные условия, блокировки чтение-запись, спин-блокировки и барьеры.

Мьютекс – это синхронизирующий объект, использование которого позволяет множеству потоков управления упорядочить доступ к разделяемым данным. Название этого средства синхронизации отражает его функциональность – взаимное исключение (mutual-exclusion). Поток захватывает мьютекс в монопольное владение и остается владельцем, пока сам же его не освободит.

Переменная условия в качестве синхронизирующего объекта дает потокам управления возможность многократно приостанавливать выполнение, пока некий ассоциированный предикат (условие) не станет истинным. Говорят, что поток, выполнение которого приостановлено на переменной условия, блокирован на этой переменной .

Блокировки чтение-запись (много читателей или один писатель ) в каждый момент времени позволяют нескольким потокам управления одновременно иметь к данным доступ на чтение или только одному потокудоступ на запись. Естественно, подобные блокировки обычно применяют для защиты данных, которые читаются чаще, чем изменяются.

Спин-блокировки представляют собой низкоуровневое средство синхронизации. Как и мьютексы, они предназначены для упорядочения доступа множества потоков управления к разделяемым данным .

Барьеры предназначены для синхронизации множества потоков управления в определенной точке их выполнения.

Средства синхронизации могут использоваться для достижения двух существенно разных целей:

  • захват (как правило, на короткое время) разделяемого объекта для защиты критического интервала;
  • ожидание (долгое или даже потенциально неограниченное) наступления некоторого события, выполнения некоторого условия.

Мьютексы и блокировки можно отнести к первой из выделенных категорий, переменные условия и барьеры – ко второй.

Вообще говоря, средства синхронизации потоков управления можно использовать не только в рамках одного процесса, но и среди множества процессов, расположенных в разделяемой, доступной на запись памяти, соответствующим образом инициализированной.

Со средствами синхронизации потоков управления ассоциируются атрибуты и атрибутные объекты, которые можно опрашивать и/или изменять аналогично тому, как это делается для самих потоков.