检查std::thread是否仍在运行

Check if std::thread is still running

本文关键字:运行 thread std 检查 是否      更新时间:2023-10-16

有没有办法确定线程是否仍在运行?由于多种原因,我无法使用std::futurestd::async

我想到了某种带有超时的join,例如,尝试加入一个线程3秒,如果成功,则认为该线程已完成,否则认为它正在运行。

您能得到的最接近的是std::thread::joinable()。引用自参考文献:

检查线程对象是否标识正在执行的活动线程。具体来说,如果是get_id() != std::thread::id(),则返回true。因此,默认构造的thread是不可联接的
已经完成代码执行但尚未联接的线程仍然被视为活动执行线程,因此是可联接的。