Windows 7 でマルチスレッド アプリケーションを使用しています。
ユーザーがコマンドラインの隅にある「X」、「Ctrl + C」、OSのシャットダウンなどを押したときに、開いている記述子、接続などを持つスレッドでジョブを正しく終了する必要があります。
私は SetConsoleHandler のハンドラーを設定しました。これは、他のスレッドがジョブを正しく終了するための適切なフラグを設定します。しかし、それらはすべて中断され、y はコード 0xc000013a で終了します。私のハンドラーでさえ、フラグを設定する時間がない場合があります。
atexit ハンドラーで同じ操作を実行しようとすると、同じ問題が残ります。
割り込みハンドラー中でもすべてのスレッドが停止するのはなぜですか? これを回避し、すべてのスレッドがジョブを終了できるようにするにはどうすればよいですか?