ユーザーがアプリケーションをシャットダウンしたいときに、IO (HTTP 呼び出しなど) を実行するのにビジーである可能性がある多数のスレッドを持つ C++ Win32 アプリケーションがあります。現在、私はうまくプレイし、すべてのスレッドが終了するのを待ってから に戻りmain
ます。時々、これには私が望むよりも時間がかかります。実際、終了できるときにユーザーを待たせるのは無意味に思えます。ただし、先に進んでから戻るとmain
、オブジェクトを使用しているスレッドがまだある間にデストラクタが呼び出され始めるため、クラッシュする可能性があります。
では、理想的でプラトニックな美徳の世界では、すべてのスレッドが終了するのを待ってから正常にシャットダウンするのが最善であることを認識すると、次善の現実世界のソリューションは何でしょうか? 単純にスレッドの終了を高速化することは、オプションではない場合があります。目標は、たとえば、新しいバージョンをその上にインストールできるように、プロセスをできるだけ早く停止することです。私が行っている唯一のディスク IO はトランザクション データベース内にあるため、プラグを抜くことについてはそれほど心配していません。