5.2 Очередь сообщений потока
Одна из главных целей Windows — предоставить всем приложениям отказоустойчивую среду. Для этого любой поток должен выполняться в такой среде, где он может считать себя единственным. Точнее, у каждого потока должны быть очереди сообщений, полностью независимые от других потоков. Кроме того, для каждого потока нужно смоделировать среду, позволяющую ему самостоятельно управлять фокусом ввода с клавиатуры, активизировать окна, захватывать мышь и тд.
Создавая какой-либо поток, система предполагает, что он не будет иметь отношения к поддержке пользовательского интерфейса. Это позволяет уменьшить объем выделяемых ему системных ресурсов. Но, как только поток обратится к той или иной GUI-функции (например, для проверки очереди сообщений или создания окна), система автоматически выделит ему дополнительные ресурсы, необходимые для выполнения задач, связанных с пользовательским интерфейсом. А если конкретнее, то система создает структуру THREADINFO и сопоставляет ее с этим потоком.
Элементы этой структуры используются, чтобы обмануть поток — заставить его считать, будто он выполняется в среде, принадлежащей только ему. THREADINFO — это внутренняя (недокументированная) структура, идентифицирующая очередь асинхронных сообщений потока (posted-message queue), очередь синхронных сообщений потока (sent-message queue), очередь ответных сообщений (reply-message queue), оче редь виртуального ввода (virtualized input queue) и флаги пробуждения (wakc flags), она также включает ряд других переменных-членов, характеризующих локальное состояние ввода для данного потока.
- Оглавление
- Введение
- Цель работы
- 1 Процессы, задания и потоки.
- 1.1 Процессы.
- 1.2 Задания.
- 1.3 Потоки.
- 2. Управление памятью в операционных системах
- 2.1 Память и отображения, виртуальное адресное пространство
- 2.2 Виртуальное адресное пространство
- 2.3 Распределение памяти статическими и динамическими разделами
- 2.4 Разделы с фиксированными границами
- 2.5 Разделы с подвижными границами
- 2.6 Сегментная, страничная и сегментно-страничная организация памяти.
- 3 Динамически подключаемые библиотеки.
- 4 Обработка исключений
- 4.1 Обработчики завершения
- 4.2 Примеры использования обработчиков завершения
- 5 Операции с окнами
- 5.1 Оконные сообщения
- 5.2 Очередь сообщений потока
- 5.3 Посылка асинхронных сообщений в очередь потока
- 5.4 Посылка синхронных сообщений окну
- Приложение 1. Справочник api-функций и сообщений Windows.
- Приложение 2. Темы курсовой работы.
- Список литературы
- Литература