c++ - 来自另一个的 sleep 线程

标签 c++ multithreading c++11

给定两个线程 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/

相关文章:

c++ - 是否需要使用互斥锁来锁定 thread_local 变量?

c# - 使用 c# QueueUserWorkItem 似乎并没有执行所有的方法

java - 如何让一个java线程等待另一个线程的结果?

c# - 从另一个线程写入 TextBox?

c++ - 具有由整数确定的固定数量参数的函数

c++ - 使用 ArrayList 实现选择排序

c++ - boost spirit 递归解析

c++ - Rcpp 需要复制构造函数

c++ - 为数值数组创建别名

c++ - libstdc++ 中允许不兼容的函数类型?