我有几个工作函数,它们调用可能会发生不好的事情的附属函数。如果辅助功能确定发生了不好的事情,我希望能够停止工作功能,而无需在工作功能中进行大量标志检查。例如,
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
。在单独的线程中发生不是问题,但在 C++ 的线程中DoWork
似乎没有等价物。pthread_kill
有没有不涉及多次if(badhappened) return;
调用的解决方案DoWork
?