2009-03-06 8 views
0

私は最近、ATLのCThreadPoolクラスを発見し、この発見に非常に満足していました。これは、タスクのいくつかのキューを処理するために複数のワーカースレッドを持つ同期化のセマンティクスを処理するきちんとした小さなクラスです。タスクは、いくつかの外部プロセスによってCThreadPoolオブジェクトに供給されます。CThreadPoolのワーカースレッドからエラー情報を転送する最善の方法は何ですか?

ここで、ワーカー・スレッドの1つにエラーが発生したか、または例外が発生したとします。私はあなたのアプリケーション全体がちょうど死ぬことを望む例外のタイプを意味するものではありませんが、あなたがより優雅に対処したいものです。優雅な言い方をすれば、アプリケーションが死ぬ可能性があることを意味しますが、私はいくつかのクリーンアップ作業を行い、それがなぜ行われたかについてプロッパーメッセージをどこかに置く必要があります。

CThreadPoolオブジェクトを所有するメインスレッドにエラー情報(メッセージ、エラーコード、ソースなど)を転送する最良の方法は何ですか?

答えて

2

このシステムで作業していた場合、誤ったタスクのPostMessageは、アプリケーションのメッセージハンドラが応答できるカスタムイベントとなります。適切にクリーンアップするために必要な情報をまとめてください。

1

すべてのエラーとキューのコンシューマイベントのスレッドを記録するための同期アクセスを使用するキューを使用します。

関連する問題