まず第一に「適切」です。なぜなら、クラスからスレッドを起動することは悪い習慣であると私は人々に教えてくれると考えているからです。 :)
だから私はデストラクタで無限のスレッドを停止する最善の方法は何ですか?フラグのシャットダウンが設定されているときに、スレッドがtryで呼び出して例外をスローするラッピング機能はありますか?ちょうど良い古いint/enum?良い新しいstd :: atomic int?他に何か?
今私は使用します:
//in destructor I call terminate member func
void terminate()
{
currentStatus=terminating;
std::cout<<"trying to kill"<
スレッドが実行する関数は次のとおりです。
while (currentStatus==active)
{
//...
}
currentStatus=terminated;
currentStatusは列挙型です:
enum status{
active,
terminating,
terminated
};