gpt4 book ai didi

c++ - 不在构造函数中运行 std::thread

转载 作者:行者123 更新时间:2023-11-27 23:45:24 25 4
gpt4 key购买 nike

我想了解如何使用 std::thread。大多数 std::thread 教程看起来都是这样

void foo() { ... }
....
std::thread thread(foo);
....
thread.join();

好的,我知道我们可以在构造函数中指定附加到线程的函数。但是,我们还有别的办法吗?

换句话说,我需要插入什么来运行 t3 线程?

#include <thread>
#include <iostream>

void print(const char* s){
while (true)
std::cout << s <<'\n';
}

int main() {

std::thread t1(print, "foo");
std::thread *t2;
t2 = new std::thread(print, "bar");
std::thread t3; // Don't change this line
// what I need to put here to run t3 ?

t1.join();
t2->join();
t3.join();
delete t2;
return 0;
}

最佳答案

t3 本质上是一个虚拟线程。查看默认构造函数的引用:

Creates new thread object which does not represent a thread.

但由于 std::thread 具有 operator=(std::thread&&),您可以通过将新线程移动到变量中来使其代表实际线程:

t3 = std::thread(print, "foobar");

这将创建并启动一个新线程,然后将其分配给 t3

关于c++ - 不在构造函数中运行 std::thread,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51116877/

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