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

UptoLike

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

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