Определение глубины очереди сообщений в окне - PullRequest
2 голосов
/ 02 июня 2009

У нас есть приложение, которое использует очередь сообщений окна для передачи данных из сокета в потребительские HWND (с частотой ~ 2100 Гц). Это приложение работает в течение> 2 лет. Недавно наше приложение начало обнаруживать проблемы, когда WM_TIMER не запускается / не выполняется нашим приложением. Я думаю, что это связано с закачкой данных в очередь сообщений.

У меня вопрос, есть ли способ определить, сколько ожидающих сообщений в очереди сообщений для данного потока / HWND?

Ответы [ 2 ]

6 голосов
/ 02 июня 2009

На это очень подробно ответил Раймонд Чен в своем посте «, но затем мы столкнулись с проблемами, когда начали публиковать 10000 сообщений в секунду ».

Исследовательская группа попросила встретиться с команда пользовательского интерфейса, чтобы помочь работать свои проблемы под нагрузкой. Oни обрисовал их дизайн и объяснил что он работал хорошо при низких скоростях передачи данных, «но потом мы столкнулись с проблемами, когда мы начал отправлять 10000 сообщений в второй. "

В этот момент главы всех пользовательский интерфейс люди просто сидели там и ошеломлен в течение нескольких секунд.

"Это все равно что сказать свою Тойоту Камри есть проблемы со стабильностью, как только вы получите более 500 миль в час. "

0 голосов
/ 02 июня 2009

Нет хорошего способа сделать это. Одна вещь, которую вы можете сделать, это агрессивно очистить очередь сообщений и поместить их в свою очередь. Но это не решит вашу проблему.

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

Foredecker

...