0

Windows 7 でマルチスレッド アプリケーションを使用しています。

ユーザーがコマンドラインの隅にある「X」、「Ctrl + C」、OSのシャットダウンなどを押したときに、開いている記述子、接続などを持つスレッドでジョブを正しく終了する必要があります。

私は SetConsoleHandler のハンドラーを設定しました。これは、他のスレッドがジョブを正しく終了するための適切なフラグを設定します。しかし、それらはすべて中断され、y はコード 0xc000013a で終了します。私のハンドラーでさえ、フラグを設定する時間がない場合があります。

atexit ハンドラーで同じ操作を実行しようとすると、同じ問題が残ります。

割り込みハンドラー中でもすべてのスレッドが停止するのはなぜですか? これを回避し、すべてのスレッドがジョブを終了できるようにするにはどうすればよいですか?

4

2 に答える 2

0

私の場合の問題は、子同士のスレッドの一部がシステムリソースで時限待機を使用していたため、それぞれがスレッドに参加するために待機から復帰する必要があったことです。そして、それらはすべて連続して停止していたので、停止するのに時間がかかりすぎました。

于 2013-12-12T12:23:18.160 に答える