2

ウィンドウメッセージキューを使用して、ソケットからコンシューマーHWNDにデータを渡すアプリケーションがあります(約2100Hzのレートで)。このアプリケーションは2年以上機能しています。最近、アプリケーションでWM_TIMERが起動/実行されないという問題が発生し始めました。これは、データがメッセージキューに送られているためだと思います。

私の質問は、特定のスレッド/ HWNDのメッセージキューに保留中のメッセージがいくつあるかを判断する方法はありますか?

4

2 に答える 2

6

これは Raymond Chen の投稿で非常に詳細に回答されていますが、「しかし、1 秒あたり 10,000 件のメッセージを投稿し始めたときに問題が発生しました」。

調査チームは、負荷がかかった状態での問題を解決するために、ユーザー インターフェース チームに会うように依頼しました。彼らは設計の概要を説明し、低いデータ レートではうまく機能したが、「1 秒あたり 10,000 メッセージを送信し始めたときに問題が発生しました」と説明しました。

その時点で、すべてのユーザー インターフェイス担当者の頭はただそこに座って数秒間動揺していました。

「時速 800 マイルを超えると、トヨタ カムリの安定性に問題があると言っているようなものです。」

于 2009-06-02T02:45:07.957 に答える
0

これを行う良い方法はありません。できることの 1 つは、積極的にメッセージ キューを空にして、独自のキューに入れることです。しかし、これでは問題は解決しません。

こんなことを言うのは嫌ですが、ソケット データを処理する方法を本当に見つけなければなりません。これには、Windows メッセージ キューを使用するよりも、他のメカニズムの方がスケールが大きく、パフォーマンスが高く、デバッグが容易であることがわかると思います。

フォアデッカー

于 2009-06-02T02:35:21.890 に答える