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