2009-06-02 2 views
2

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

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

ответ

0

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

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

Foredecker

+0

Спасибо, Это было то, чего я боялся. Я просто хотел посмотреть, насколько глубока очередь сообщений, чтобы проверить, что моя проблема была в этом бите кода, прежде чем перепроектировать этот поток данных. – tallganglyguy

6

Это отвечает на самом деле очень подробно Рэймонд Чен на своем посту «but then we ran into problems when we started posting 10,000 messages per second».

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

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

«Это как сказать, что у вашей Toyota Camry есть проблемы со стабильностью, как только вы получите более 500 миль в час».

Смежные вопросы