При выполнении нескольких потоков они будут неизменно взаимодействовать
друг с другом, чтобы синхронизироваться. Существует
несколько средств синхронизации потоков. Это:
блоки взаимного исключения (Mutex);
переменные состояния;
семафоры.
Объекты синхронизации являются переменными, к ним можно
обратиться, как к данным. Потоки в различных процессах могут
связаться друг с другом через объекты синхронизации, помещенные в
разделяемую память потоков, даже в случае, когда потоки в различных
процессах вообще невидимы друг для друга.
Объекты синхронизации можно разместить в файлах, где они будут находиться
независимо от создавшего их процесса.
Основные ситуации, которые требуют использования синхронизации:
Если синхронизация - это единственный способ гарантировать последовательность
разделяемых данных.
Если потоки в двух или более процессах могут использовать единственный
объект синхронизации совместно. При этом объект синхронизации должен
инициализироваться только одним из взаимодействующих процессов, потому
что повторная инициализация объекта синхронизации переводит его
в открытое состояние.
Если синхронизация может гарантировать достоверность изменяющихся
данных.
Если процесс может отобразить файл и существует поток в этом процессе,
который получает уникальный доступ к записям. Как только установлена
блокировка, любой другой поток в любом процессе, отображающем файл,
который пытается установить блокировку, блокируется, пока запись не
будет освобождена.