Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы на гос экзамен 2 курс.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
99 Кб
Скачать
☆

48. Повідомлення та черги повідомлень.

Основою віконного графічного інтерфейсу Windows є механізм повідомлень. Повідомлення можуть передаватися віконної процедури негайно, а можуть міститися в чергу повідомлень. При запуску вашої програми, Windows створює для нього чергy повідомлень. Черга повідомлень створюється для кожного потоку (thread), але в самому найпростішому

випадку створюється одна черга. При будь-якій дії з вікном (зміна розмірів і т.д.) Windows поміщає в

чергу відповідне повідомлення. Формат повідомлення відповідає структурі MSG.

Хендлі вікна – Число ідентифікує вікно. У кожного вікна в Windows є свій Хендлі. Практично у всіх функціях API потрібно вказувати Хендлі вікна. Повідомлення поміщаються в чергу повідомлень необхідно правильно витягувати і обробляти. Для цього потрібно побудувати цикл обробки повідомлень.

Черга повідомлень – класичний стек типу LIFO (Last in First out)

49. Обмін даними між процесами.

Существуют следующие способы разделения данных между процессами:

Отображение проецируемых файлов (File mapping).

Два процесса отображают один и тот же объект “проецируемый файл” на свое адресное пространство.

Разделяемая память (Shared Memory).

Отличается от предыдущего способа только тем, что в качестве разделяемого файла используется часть файла подкачки.

Безымянные транспортеры (Anonymous Pipe).

Один из классических способов взаимодействия процессов, известный еще в UNIX. С помощью функции CreatePipe процесс создает два описателя: один - для чтения, другой - для записи. Эти описатели аналогичны описателям файлов в том смысле, что с ними можно работать файловыми функциями ReadFile и WriteFile. Если породить дочерний процесс так, что бы он наследовал описатели, то можно использовать описатели транспортера для взаимодействия процессов. Можно предложить следующую схему взаимодействия:

Именованные транспортеры (Named Pipes).

Аналогичны предыдущим за исключением того, что при создании транспортеру присваивается уникальное глобальное имя. Процесс, породивший транспортер называется сервером. Процесс, которые присоединяется к этому транспортеру, называется клиентом. Клиент может присоединяться к серверу, находящемуся на удаленном компьютере в сети. Для обслуживания одновременно нескольких клиентов необходимо порождать несколько потоков.

Почтовые ящики (MailSlots).

Аналогичны именованным транспортерам, но предоставляют более простой и однонаправленный интерфейс. Процесс-сервер может завести почтовый ящик и дать ему имя, глобальное в сети. Любой клиент может с помощью операций работы с файлами отправить данные в этот ящик. Сервер, по мере необходимости, может читать переданные ему данные. Кроме этого, возможно широковещательная передача информации клиентом всем серверам домена.

Буфер обмена (Clipboard).

Широко применяемый в Windows механизм обмена информацией с использованием специального системного глобального буфера. При этом реализуется модель cut-copy-paste. Любое приложение может поместить данные в буфер обмена и получить данные из него.

Динамический обмен данными (DDE - Dynamic Data Exchange).

Присоединение и внедрение объектов (OLE - Object linking and embedding).

Протокол первоначально предназначенный для создания составных документов. С его помощью можно, например, вставить таблицу MS Excel® в документ MS Word. При этом возможно как вставить таблицу целиком (embedding), так и вставить только ссылку на эту таблицу (linking). В настоящее время протокол OLE развился до набора технологий, лежащих в основе построения современных информационных систем.

Динамически компонуемые библиотеки (DLL - dynamic link libraries).

Если два приложения используют одну библиотеку, то они разделяют все глобальные переменные этой библиотеки. В действительности, глобальные переменные, как и вся библиотека, отображаются на адресные пространства разных процессов. Этот метод не привносит никакой новой функциональности по сравнению с отображением проецируемых файлов и, поэтому, его использование не рекомендуется.

Удаленный вызов процедур (RPC - Remote Procedure Call).