Сообщения и очереди сообщений
Сообщения и очереди сообщений
GetQueueStatus
Функция GetQueueStatus возвращает флаги, которые показывают тип сообщений, обнаруженных в очереди сообщений вызывающего потока.
DWORD GetQueueStatus (
UINT flags // флаги состояния очереди
);
Параметры
flags - определяет флаги состояния очереди, указывая типы сообщений для проверки. Может быть комбинацией следующих значений:
Значение
Пояснение
QS_ALLEVENTS
Сообщение ввода, WM_TIMER, WM_PAINT, WM_HOTKEY или помещенное в очередь сообщение.
QS_ALLINPUT
Любое сообщение ввода.
QS_HOTKEY
Сообщение WM_HOTKEY .
QS_INPUT
Сообщение ввода.
QS_KEY
Сообщение WM_KEYUP, WM_KEYDOWN, WM_SYSKEYUP или WM_SYSKEYDOWN в очереди.
QS_MOUSE
Сообщение WM_MOUSEMOVE или сообщение клавиши мыши ( WM_LBUTTONUP, WM_RBUTTONDOWN и т. п.).
QS_MOUSEBUTTON
Сообщение клавиши мыши ( WM_LBUTTONUP, WM_RBUTTONDOWN и т. п.).
QS_MOUSEMOVE
Сообщение WM_MOUSEMOVE.
QS_PAINT
Сообщение WM_PAINT .
QS_OSTMESSAGE
Помещенное сообщение, отличное от перечисленных выше, находится в очереди.
QS_ENDMESSAGE
Сообщение, отправленное другим потоком или приложением, находится в очереди.
QS_TIMER
Сообщение WM_TIMER .
Возвращаемые значения
Старшее слово показывает типы сообщений, находящихся в очереди. Младшее слово показывает типы сообщений, которые были добавлены в очередь и все еще там находятся с момента последнего вызова функции GetQueueStatus : GetMessage или PeekMessage .
Комментарии
Присутствие флага QS_ в возвращаемом значении не гарантирует, что последующий вызов функции PeekMessage или GetMessage вернет сообщение. PeekMessage или GetMessage выполняют определенную внутреннюю фильтрацию, которая может привести ко внутренней обработке сообщения. По этой причине, возвращаемое функцией GetQueueStatus значение должно быть рассматриваемо только как намек на то, должна ли быть вызвана функция GetMessage или PeekMessage .
См. также
GetInputState, GetMessage, PeekMessage .
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Очереди запросов
Очереди запросов Для блочных устройств поддерживаются очереди запросов (request queue), в которых хранятся ожидающие запросы на выполнение операций блочного ввода-вывода. Очередь запросов представляется с помощью структуры request_queue, которая определена в файле <linux/blkdev.h>.
26.5. Очереди сообщений
26.5. Очереди сообщений 26.5.1. Основные структуры ядра для работы с очередями Очередь сообщений — это связный список, находящийся в адресном пространстве ядра. Каждая очередь имеет свой уникальный идентификатор IPC.Структура ядра msgbuf (описана в файле /usr/src/linux/include/linux/msg.h)
26.5.4. Получение сообщений очереди
26.5.4. Получение сообщений очереди Для получения сообщения используется системный вызов msgrcv():int msgrcv(int msqid, struct msgbuf *msgp, int msgsz, long mtype, int msgflg);Первый аргумент определяет очередь, из которой нужно получить сообщение. Второй аргумент — это адрес буфера, в который будет записано
26.5.5. Проверка наличия сообщения в очереди
26.5.5. Проверка наличия сообщения в очереди Наверное, вы не хотите, чтобы ваша программа ждала, пока в очереди появится нужное сообщение. Используя особенности системного вызова msgrcv(), можно написать код проверки наличия сообщения определенного типа в очереди. Напишем
ГЛАВА 5 Очереди сообщений Posix
ГЛАВА 5 Очереди сообщений Posix 5.1. Введение Очередь сообщений можно рассматривать как связный список сообщений. Программные потоки с соответствующими разрешениями могут помещать сообщения в очередь, а потоки с другими соответствующими разрешениями могут извлекать их
Пример: очереди сообщений Posix и функция select
Пример: очереди сообщений Posix и функция select Дескриптор очереди сообщений (переменная типа mqd_t) не является «обычным» дескриптором и не может использоваться с функциями select и poll (глава 6 [24]). Тем не менее их можно использовать вместе с каналом и функцией mq_notify. (Аналогичный
ГЛАВА 6 Очереди сообщений System V
ГЛАВА 6 Очереди сообщений System V 6.1. Введениеы Каждой очереди сообщений System V сопоставляется свой идентификатор очереди сообщений. Любой процесс с соответствующими привилегиями (раздел 3.5) может поместить сообщение в очередь, и любой процесс с другими соответствующими
6.10. Ограничения, накладываемые на очереди сообщений
6.10. Ограничения, накладываемые на очереди сообщений Как отмечалось в разделе 3.8, на очереди сообщений часто накладываются системные oгрaничeния. В табл. 6.2 приведены значения этих oгрaничeний для двух конкретных реализаций. Первая колонка представляет собой традиционное
Измерение полосы пропускания очереди сообщений Posix
Измерение полосы пропускания очереди сообщений Posix В листинге А.5 приведена функция main программы, измеряющей полосу пропускания очереди сообщений Posix. Листинг А.6 содержит функции reader и writer. Эта программа устроена аналогично предыдущей, измерявшей полосу пропускания
9.2. Стеки и очереди
9.2. Стеки и очереди Стеки и очереди — это первые из встретившихся нам структур, которые, строго говоря, не встроены в Ruby. Иными словами, в Ruby нет классов Stack и Queue, в отличие от Array и Hash (впрочем, класс Queue есть в библиотеке thread.rb, которую мы еще будем рассматривать).И все же в
Получение и пересылка сообщений. Создание ответных сообщений
Получение и пересылка сообщений. Создание ответных сообщений Чтобы получить новую почту, выполните команду главного меню Сервис ? Отправить/Получить ? Доставить почту либо нажмите клавишу F9. Все полученные почтовые сообщения будут помещены в папку Входящие и помечены
У6.10 Очереди
У6.10 Очереди Описать в виде АТД очереди (первым пришел - первым ушел) в том же стиле, что и стеки. Обратите внимание на общие и отличительные черты этих АТД. (Указание: аксиомы для item и remove должны отличаться, при описании put (s,x) рассмотрите случаи, когда очередь s пуста и