Операционные системы. Теория и практика. Замятин А.В. - 222 стр.

UptoLike

Составители: 

222
Объекты синхронизации можно также разместить в файлах, где они
будут существовать независимо от создавшего их процесса.
Необходимость в синхронизации потоков возникает в следующих
случаях:
1. Если синхронизация это единственный способ гарантировать
последовательность разделяемых (общих) данных.
2. Если потоки в двух или более процессах могут использовать
единственный объект синхронизации совместно. При этом объект син-
хронизации должен инициализироваться только одним из взаимодей-
ствующих процессов, потому что повторная инициализация объекта
синхронизации устанавливает его в открытое состояние.
3. Если синхронизация может гарантировать достоверность изме-
няющихся данных.
4. Если процесс может отобразить файл и существует поток в этом
процессе, который получает уникальный доступ к записям. Как только
установлена блокировка, любой другой поток в любом процессе, отоб-
ражающем файл, который пытается установить блокировку, блокирует-
ся, пока запись в файл не будет закончена.
8.3 Мьютексы
8.3.1 Функции синхронизации потоков с использованием мьютек-
сов
Для синхронизации потоков с использованием мьютексов исполь-
зуются следующие основные функции:
pthread_mutex_init инициализирует взаимоисключающую бло-
кировку;
pthread_mutex_destroy удаляет взаимоисключающую блокиров-
ку;
pthread_mutex_lock устанавливает блокировку. В случае, если
блокировка была установлена другим потоком, текущий поток останав-
ливается до снятия блокировки другим процессом;
pthread_mutex_unlock снимает блокировку.
8.3.2 Инициализация и удаление объекта атрибутов мьютекса
Атрибуты мьютекса могут быть связаны с каждым потоком. Чтобы
изменить атрибуты мьютекса по умолчанию, можно объявить и инициа-
лизировать объект атрибутов мьютекса, а затем изменить определенные
значения. Часто атрибуты мьютекса устанавливаются в одном месте в