给定两个线程 A 和 B,是否有任何可移植的方式让 A 暂停 B,而 B 中没有为此目的的任何自定义代码?
基本原理:目前,B 是一个非常复杂的算法,当 A(监控线程)告诉它时,通过不时检查一些共享标志,它应该干净地退出。问题是出于调试目的,我想确切地知道 A 请求退出时 B 处于哪个状态(例如,看看我们忘记检查共享标志的地方),所以我想暂停 B(用于调试)来自A。换句话说,我不仅需要同步线程,还需要同步调试线程。
最佳答案
这取决于系统。 Windows 有一个函数 SuspendThread
,但我承认我对它了解不多。在 Unix 下,您应该能够使用 pthread_kill
向线程发送信号(尽管它的名字,不会杀死线程,而只是发送信号),并在目标线程中捕获它,其中信号处理程序可以调用 sleep
。
关于c++ - 来自另一个的 sleep 线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8442969/