【发布时间】:2017-08-12 23:09:33
【问题描述】:
关于std::thread::joinable的网站cppreference上有说明:
检查线程对象是否标识了一个活动的执行线程。 具体来说,如果 get_id() != std::thread::id() 则返回 true。所以一个 默认构造的线程是不可连接的。一个已经结束的线程 执行代码,但尚未加入仍被视为 执行的活动线程,因此是可连接的。
std::thread::join 文档中的以下内容:
错误情况
resource_deadlock_would_occur if this->get_id() == std::this_thread::get_id()(检测到死锁)
这种方法的唯一目的是检测这种情况吗?我们目前厚颜无耻地只调用 thread->join 而没有可连接的包装器,这种方法有什么危险?
【问题讨论】:
-
std::thread::join文档说你不能join自己的线程。 -
@Someprogrammerdude,常识也这么说。
-
“这个方法”指的是什么?
join或joinable? -
@DanielSanchez youtube.com/watch?v=wg4trPZFUwc
标签: c++ multithreading c++11