LIFO Win32 цикл сообщений?

Можно ли как-то хитро использовать PostMessage, GetMessageи т. д. для постановки в очередь сообщений LIFO (при условии, что и отправитель, и петля принимающего сообщения взаимодействуют), или мне нужно будет развернуть собственное решение?

Если вас интересует вариант использования, это загрузка значков. Вы всегда хотите сначала загрузить последние запрошенные значки.:)

1 ответ

Решение

Нет, вам нужно накатить свою собственную - очередь сообщений Windows имеет максимальный размер, и если она когда-либо будет заполнена, все виды вещей пойдут плохо, от COM, DDE до взаимодействия с пользователем.

Вместо использования очереди потока, вы должны использовать deque (или подобный), защищенный критическим разделом.

  • http://msdn.microsoft.com/en-us/library/windows/desktop/ms644944(v=vs.85).aspx

    Существует ограничение в 10 000 опубликованных сообщений на одну очередь сообщений. Этот предел должен быть достаточно большим. Если ваше приложение превышает лимит, оно должно быть переработано, чтобы избежать использования большого количества системных ресурсов.

Смотрите также пример того, что может пойти не так:

Другие вопросы по тегам