win32 アプリの高速シャットダウンを保証するにはどうすればよいですか?



ユーザーがアプリケーションをシャットダウンしたいときに、IO (HTTP 呼び出しなど) を実行するためにビジーである可能性のあるスレッドが多数ある C++ Win32 アプリケーションがあります。現在、私はうまくプレイし、すべてのスレッドが終了するのを待ってから main から戻ります .時々、これには私が望むよりも時間がかかります。実際、終了できるときにユーザーを待たせるのは無意味に思えます。ただし、先に進んで main から戻ると 、オブジェクトを使用しているスレッドがまだある間にデストラクタが呼び出され始めると、クラッシュする可能性があります。


では、理想的でプラトニックな美徳の世界では、すべてのスレッドが終了するのを待ってから正常にシャットダウンするのが最善であることを認識すると、次善の現実世界のソリューションは何でしょうか?単純にスレッドの終了を高速化することは、オプションではない場合があります。目標は、たとえば、新しいバージョンをその上にインストールできるように、プロセスをできるだけ早く停止することです。私が行っている唯一のディスク IO はトランザクション データベース内にあるため、プラグを抜くことについてはそれほど心配していません。