スレッドを WINAPI 呼び出しのみと同期したいのですが、うまくいきません。状況は、WNDPROC がメッセージを受け取るとすぐに、時刻と日付で活動をログに記録することです。問題は、私の WNDPROC がログに書き込む必要があり、ファイルへの書き込みに時間がかかるため、手に負えなくなることです。WNDPROC が起動したらすぐにクリティカル セクションに入り、ログへの書き込みが終了したらすぐにクリティカル セクションから出ようとしましたが、うまくいきませんでした。どうすればお互いを待たせることができますか?
質問する
163 次
1 に答える
1
待たないでください-キュー。
Windowsメッセージは(それ自体の中で)非常に小さいので、メッセージ全体を生産者/消費者キューにコピーすることは合理的なアプローチです。独自のキュークラスを作成することも、PostThreadMessage()APIを使用して、受信したメッセージをロガースレッドにコピーしてキューに入れることもできます。
http://msdn.microsoft.com/en-gb/library/windows/desktop/ms644946%28v=vs.85%29.aspx
PTM()の問題は、メッセージデータのみがコピーされてキューに入れられることです。日時はありません。メッセージのコピーを取得するときに、時間/日付をロガースレッドに追加する必要があります。要件をチェックして、これが許容できるかどうかを確認してください。そうでない場合は、Windowsメッセージと日付/時刻の両方のメンバーを持つ別の「メッセージ」構造体を使用する必要があります。
キューイングは、UIスレッドを、場合によっては時間のかかるディスクロギング書き込み操作から隔離し、必要に応じて、遅延書き込みやその他のそのような最適化を組み込むための柔軟性を高めます。
于 2013-02-20T09:05:02.297 に答える