Шаг 290.
Модели потоков. Синхронизация процессов (общие сведения)

    На этом шаге мы приведем общие сведения о синхронизации процессов.

    Задача синхронизации встает при одновременном доступе нескольких процессов (или нескольких потоков одного процесса) к какому-либо ресурсу. Поскольку поток в Win32 может быть остановлен в любой, заранее ему неизвестный момент времени, возможна ситуация, когда один из потоков не успел завершить модификацию ресурса (например, отображенной на файл области памяти), но был остановлен, а другой поток попытался обратиться к этому же ресурсу. В этот момент ресурс находится в несогласованном состоянии, и последствия обращения к нему могут быть самыми неожиданными - от порчи данных до нарушения защиты памяти. Главной идеей, положенной в основу синхронизации потоков в Win32, является использование объектов синхронизации и функций ожидания. Объекты могут находиться в одном из двух состояний - сигнальном (signaled) или несигналъном (not signaled). Функции ожидания блокируют выполнение потока до тех пор, пока заданный объект находится в несигнальном состоянии. Таким образом, поток, которому необходим эксклюзивный доступ к ресурсу, должен выставить какой-либо объект синхронизации в несигнальное состояние, а по окончании - сбросить его в сигнальное. Остальные потоки должны перед доступом к этому ресурсу вызвать функцию ожидания, которая позволит им дождаться освобождения ресурса. Рассмотрим, какие объекты и функции синхронизации предоставляет Win32 API.

    На следующем шаге мы рассмотрим функции синхронизации.




Предыдущий шаг Содержание Следующий шаг