gpt4 book ai didi

c++ - 在 C++11 中, "does not represent a thread of execution"的线程有什么意义?

转载 作者:IT老高 更新时间:2023-10-28 14:01:59 27 4
gpt4 key购买 nike

查看 C++11 中的新线程以了解它映射到 pthread 的难易程度,我注意到 thread 构造函数区域中的奇怪部分:

thread();
Effects: Constructs a thread object that does not represent a thread of execution.
Postcondition: get_id() == id()
Throws: Nothing.

换句话说,线程的默认构造函数实际上似乎并没有创建线程。显然,它创建了一个线程对象,,但是如果没有支持代码,它到底有什么用呢?是否有其他方式可以将“执行线程”附加到该对象,例如 thrd.start() 或类似的东西?

最佳答案

Is there some other way that a "thread of execution" can be attached to that object, like thrd.start() or something similar?

// deferred start
std::thread thread;

// ...

// let's start now
thread = std::thread(functor, arg0, arg1);

std::thread是 MoveConstructible 和 MoveAssignable 类型。所以这意味着在像 std::thread zombie(some_functor); std::thread steal(std::move(zombie)); 这样的代码中zombie将处于与没有执行线程相关联的特殊但有效的状态。默认构造函数在某种意义上是免费的,因为它所要做的就是将对象置于那个确切的状态。它还允许 std::thread 的数组和 std::vector<std::thread>::resize 之类的操作.

关于c++ - 在 C++11 中, "does not represent a thread of execution"的线程有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7550362/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com