从另一个人那里睡觉

Bro*_*Cat 11 c++ multithreading c++11

给定两个std :: threads A和B,有没有A可以暂停B的方式,而B中没有任何自定义代码用于此目的?

理由:目前,B是一个非常复杂的算法,当A(监控线程)告诉它时,它应该干净地退出,通过不时地检查一些共享标志.问题是,出于调试目的,我想确切地知道哪个状态B是A请求退出的时刻(例如,看看我们忘记检查共享标志的位置),所以我想暂停B(用于调试)一个.

提前致谢!Broes

Jam*_*nze 6

这取决于系统.Windows有一个功能SuspendThread,但我承认我不太了解它.在Unix下,您应该能够使用pthread_kill(尽管它的名称,不会杀死线程,但只是发送信号)向线程发送信号,并在目标线程中捕获它,信号处理程序可以调用它sleep.