¿Cuán profunda es la cola de mensajes de Win32?


13

¿Cuántos mensajes mantiene la cola para una ventana estándar? ¿Qué sucede cuando la cola se desborda?

La documentación para GetMessage y familiares no dice nada al respecto, y PeekMessage solo le da un sí/no para ciertas clases de mensajes, no un conteo de mensajes.

This page dice que las colas se implementan utilizando archivos mapeados en memoria, y que no hay límite de recuento de mensajes, pero esa página es sobre WinCE. ¿Esto se aplica a Win32 de escritorio también?

13

10000 por defecto, pero se puede ajustar a través del registro.

Si la cola se desborda, PostMessage falla.

Documentación aquí:

PostMessage function on MSDN

  0

Eso cubre 2000/XP - ¿alguna idea sobre Vista? 23 sep. 082008-09-23 19:52:35

  0

Acabo de ver la clave de registro que figura en ese artículo en una máquina Vista Business SP1, y está configurada en 10000. No sé si ese es el único factor para determinar la longitud de la cola en Vista. 23 sep. 082008-09-23 19:55:52

  0

No * SÉ * pero sería poco probable que sea diferente. Vista no es tan revolucionario, no creo ... 23 sep. 082008-09-23 19:59:05

+1

Una cosa más, si estás pensando en usar la cola de mensajes como, um, una cola que está siendo alimentada por otro hilo, creo que te decepcionará Los resultados. Terminará con una GUI que no responde. Nuestra compañía tiene mucha experiencia con exactamente esta técnica diseñada fallida. 23 sep. 082008-09-23 20:00:44

  0

Hola Corey, gracias por la respuesta. El límite mencionado y la clave de registro (que se puede ajustar) también funcionan para Windows 8. 22 ago. 132013-08-22 12:06:15


3

Como se indica en el artículo de MSDN, si es necesario preocuparse por el tamaño de la cola de mensajes, que podría estar mejor rediseño de su aplicación.

  0

En este caso, estamos del otro lado de la cola; el controlador de nuestro dispositivo está publicando los mensajes y una aplicación Flash de juguete se estancó después de unos minutos. 24 sep. 082008-09-24 13:17:11