Обмен данными между процессами и потоками

В Windows NT/2000/ХР применяются механизмы межпроцессного взаимодействия (InterProcess Communication - IPC), приведенные в таблице 1.

Таблица 1

Механизм IPC Назначение
Динамический обмен данными (Dynamic Data Exchange - DDE) Устарел и труден в реализации. Рекомендуется использовать лишь в случаях крайней необходимости.
Буфер обмена Пересылка данных обычно выполняется с участием пользователя.
OLE 2.0 Имеются встроенные функции для пересылки данных через границы процессов. Излишне сложен для простого обмена данными.
Сообщения WM_USER Они работают - но чувствительны к ошибкам при передаче указателей.
Сообщения WM_COPYDATA Способ пересылки блока данных из одной программы в другую. Используется в тех случаях, когда скорость передачи данных не является критической и не требуется синхронизировать передачу данных.
Анонимные каналы (Anonymous pipes) Полезны для организации прямой связи между двумя процессами на одном ПК.
Именованные каналы (Named pipes) Полезны для организации прямой связи между двумя процессами на одном ПК или в сети.
Почтовые ячейки (mailslots) Полезны для организации связи одного процесса со многими на одном ПК или в сети.
Гнезда (sockets) Полезны для организации пересылки данных как в Windows-программы, так и в прочие программы, функционирующие на одном ПК, в сети или в интрасети.
События, взаимные исключения (mutexes) и семафоры Только для простого взаимодействия - пересылка данных невозможна.
   
Файлы отображаемой памяти Обеспечивают одновременный доступ к объектам файла отображения из нескольких процессов.

В среде операционной системы Microsoft Windows NT/2000/ХР доступно такое удобное средство передачи данных между параллельно работающими процессами, как каналы типа Pipe. Это средство позволяет организовать передачу данных между локальными процессами, а также между процессами, запущенными на различных рабочих станциях в сети. Каналы типа Pipe больше всего похожи на файлы, поэтому они достаточно просты в использовании.

Через канал можно передавать данные только между двумя процессами. Один из процессов создает канал, другой открывает его. После этого оба процесса могут передавать данные через канал в одну или обе стороны, используя для этого хорошо знакомые вам функции, предназначенные для работы с файлами, такие как ReadFile и WriteFile. Заметим, что приложения могут выполнять над каналами Pipe синхронные или асинхронные операции, аналогично тому, как это можно делать с файлами. В случае использования асинхронных операций необходимо отдельно побеспокоиться об организации синхронизации.

 








Дата добавления: 2018-11-25; просмотров: 626;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.004 сек.