何か悪いことが起こるかもしれないアクセサリー関数を呼び出すいくつかの作業関数があります。アクセサリー関数が何か悪いことが起こったと判断した場合、作業関数に多数のフラグチェックを入れることなく、作業関数を停止できるようにしたいと考えています。例えば、
struct Worker {
bool badhappened = false;
Worker() {
std::thread([&]() {
while ( not badhappened );
// kill the work
}).detach();
}
int WorkComponent {
if ( badhappening() )
badhappened = true;
return someint;
}
void DoWork {
// WorkComponents called several times
}
}
しかし、私は何を呼ぶべきかわかりませんkill the work
。別のスレッドで発生することは問題でDoWork
はありませんがpthread_kill
、C++ のスレッドには同等のものはないようです。if(badhappened) return;
複数の呼び出しを に入れる必要のない解決策はありDoWork
ますか?