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

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

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

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



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий