从另一个人那里睡觉

时间:2011-12-09 08:37:26

标签: c++ multithreading c++11

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

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

提前谢谢! Broes

1 个答案:

答案 0 :(得分:6)

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