Насколько глубока очередь сообщений Win32?


13

Сколько сообщений занимает очередь для стандартного окна? Что происходит, когда очередь переполняется?

Документация для GetMessage и родственники ничего не говорят об этом, а PeekMessage дает только да/нет для определенных классов сообщений, а не количество сообщений.

This page говорит, что очереди реализованы с использованием файлов с отображением памяти и что нет предела количества сообщений, но эта страница о WinCE. Это относится и к настольному Win32?

13

10000 по умолчанию, но его можно настроить с помощью реестра.

Если очередь переполнена, PostMessage терпит неудачу.

Документация здесь:

PostMessage function on MSDN

  0

Что охватывает 2000/XP - любая идея о Vista? 23 сен. 082008-09-23 19:52:35

  0

Я просто посмотрел на раздел реестра, указанный в этой статье на машине Vista Business SP1, и установлен на 10000. Я не знаю, является ли это единственным фактором при определении длины очереди на Vista. 23 сен. 082008-09-23 19:55:52

  0

Я не * ЗНАЮ *, но вряд ли будет иначе. Vista не так революционна, я не думаю ... 23 сен. 082008-09-23 19:59:05

+1

Еще одна вещь - если вы думаете об использовании очереди сообщений как, um, очереди, которая питается другим потоком, я думаю, вы разочаруетесь в результаты. В итоге вы получите невосприимчивый графический интерфейс. Наша компания имеет большой опыт работы именно с этой неудачной техникой. 23 сен. 082008-09-23 20:00:44

  0

Привет, Кори, спасибо за ответ. Указанный лимит и раздел реестра (который можно настроить) работают и для Windows 8. 22 авг. 132013-08-22 12:06:15


3

Как указано в статье MSDN, если вам нужно беспокоиться о размере очереди сообщений, вы могли бы быть лучше перепроектирования приложения.

  0

В этом случае мы находимся на другой стороне очереди; наш драйвер устройства отправляет сообщения, а игрушка Flash-приложение увядает через несколько минут. 24 сен. 082008-09-24 13:17:11