检查std::thread是否仍在运行
Check if std::thread is still running
有没有办法确定线程是否仍在运行?由于多种原因,我无法使用std::future
和std::async
。
我想到了某种带有超时的join
,例如,尝试加入一个线程3秒,如果成功,则认为该线程已完成,否则认为它正在运行。
您能得到的最接近的是std::thread::joinable()
。引用自参考文献:
检查线程对象是否标识正在执行的活动线程。具体来说,如果是
get_id() != std::thread::id()
,则返回true
。因此,默认构造的thread
是不可联接的
已经完成代码执行但尚未联接的线程仍然被视为活动执行线程,因此是可联接的。
相关文章:
- 运行同一解决方案的另一个项目的项目
- 在运行之前获取 std::thread's thread:id?
- CLang:在 std::thread 中运行函数会导致结构创建BAD_ACCESS
- 如何使用boost.thread运行多个接收器,每个线程应该分配给每个接收器?
- 使用 vector<thread> 和 .join() 未并行运行的多线程C++程序
- 使用 boost::thread 运行函子,但析构函数被错误地调用
- 移动包含正在运行的 std::thread 成员的对象
- 如何使用 Thread 运行类构造函数
- C++11使用std::thread运行模板化类函数
- boost::thread应该在无限循环中运行,并等待没有互斥锁的新输入
- Linux gnu++11,在运行时获取"Enable multithreading to use std::thread: Operation not permitted"
- 在 Linux 上使用 GCC 4.6 和 4.7 运行简单 std::thread 代码时的核心转储
- 我的'show progress thread'在计数时无法运行
- 使用std::thread的C++多线程应用程序在Windows上运行良好,但在Ubuntu上则不然
- 检查std::thread是否仍在运行
- 终止运行线程c++ std::thread
- 为什么std::thread采用函数由右值运行
- 使用 boost:thread 的可运行类
- 使用Boost Thread在具有不同输入的多个线程上运行一个函数
- std::thread -如何使主线程继续运行,子线程分支