有没有办法确定线程是否仍在运行?我出于几个原因无法使用std::future
和std::async
。
我想到某种join
超时,例如尝试加入一个线程3秒,如果成功,则认为该线程已完成,否则认为该线程正在运行。
答案 0 :(得分:2)
最接近的是std::thread::joinable()
。引自引用:
检查线程对象是否标识了活动的执行线程。具体而言,如果
true
则返回get_id() != std::thread::id()
。因此,默认构造的thread
不可连接 已完成执行代码但尚未加入的线程仍被视为活动执行线程,因此可以连接。