![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Мьютексы. Обычно используются для управления доступом к данным.
Мьютекс - синхронизирующий объект как для процессов, так и для потоков. В каждый момент времени только один процесс (поток) имеет право обладания этим объектом. Суть его использования такова.
Пусть два (или более) процесса (потока) имеют необходимость в доступе к некоторому разделяемому ресурсу. Для организации взаимного исключения один из этих процессов должен посредством функции CreateMutex создать мьютекс с некоторым именем, предназначенный для пользования этим ресурсом. Остальные процессы должны знать это имя для обращения к мьютексу.
Существует набор функций, позволяющий запросить право владения этим объектом. Одни функции этого набора прерывают работу вызвавшего их потока до момента освобождения мьютекса, другие проверяют возможность получения права обладания и при наличии такой возможности сразу получают это право, иначе возвращают управление вызвавшему их процессу.. Первым занимает мьютекс либо его создатель, либо процесс, первым вызвавший одну из функций ожидания. По завершении работы с разделяемым ресурсом мьютекс освобождается.
Фактически мьютекс - это реализация монитора в семействе WinNT.
События. Обычно используются для оповещения процессов о завершении некоторых действий. В каждой ОС реализованы свои механизмы передачи сообщений и обработки событий.
Взаимодействие процессов и потоков включает в себя, помимо синхронизации, также и передачу данных между ними. Для передачи данных обычно используются средства ОС, специально ориентированные на межпроцессные взаимодействия.
В ОС семейства WinNT для передачи данных чаще всего употребляются сообщения (при этом «полезная информация» переносится как самим сообщением, так и его параметрами - wparam и lparam). Специально зарезервированное сообщение wm_copydata позволяет передавать большие объемы данных, используя механизм отображаемых в память файлов (memory-mapped files). Этот механизм можно использовать и напрямую, оперируя функциями winAPI.
В UNIX для передачи данных используются конвейеры (при последовательном запуске программ), каналы, сигналы (эквивалент сообщений windows), а также средства, базирующиеся на протоколе TCP/IP. Последние позволяют организовать в том числе и межмашинное взаимодействие.
Дата публикования: 2015-10-09; Прочитано: 458 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!