繁体   English   中英

C++ 中的可连接线程

[英]Joinable thread in C++

http://www.cplusplus.com/reference/thread/thread/joinable/

如果线程 object 表示执行线程,则它是可连接的。

在这些情况下,线程 object 是不可连接的:

 if it was **default-constructed**. if it has been **moved from** (either constructing another thread object, or assigning to it). if either of its members join or detach has been called.
  • 这里的 default constructed 是什么意思?

  • W.R.T 移自 - 当我们必须将线程放入向量中时,我们可能会在外部创建线程对象,然后将它们移动到向量中。 这是 this moved from 所指的案例之一吗?

  • detach调用一次后,是不是就不能再join了呢?

这里的 default constructed 是什么意思?

它意味着一个 std::thread 没有 arguments 构造,因此不代表一个线程(即它不是“运行中的”)。 请参阅文档: https://en.cppreference.com/w/cpp/thread/thread/thread

W.R.T 移自 - 当我们必须将线程放入向量中时,我们可能会在外部创建线程对象,然后将它们移动到向量中。 这是 this moved from 所指的案例之一吗?

是的,您不能在将线程移入向量后加入线程。 但是您当然可以在向量中加入新线程 object(它被“移动到”的位置)。

detach调用一次后,是不是就不能再join了呢?

没错,您不能加入已经加入或分离的线程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM