gpt4 book ai didi

c++ - 为什么必须显式加入线程?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:15:31 26 4
gpt4 key购买 nike

所以这看起来很简单:

#include <iostream>
#include <thread>

void second() {
cout << "Don't thread on me!" << endl;
}

int main() {
thread t { second };
t.join();

return 0;
cin.get();
}

如果我不包含 join(),那么系统会调用 abort()。我不明白这个,线程不应该自己退出吗?必须加入线程似乎会使代码更难正确封装。这是怎么回事?

最佳答案

那是 C++ 线程库设计的一部分。您不需要加入线程,您也可以分离它。但我不建议您默认使用 detach 线程,因为这会带来一系列复杂问题。

与您所说的相反,我认为这根本不会使代码更难封装。有不同的抽象级别,选择线程级别意味着您需要意识到存在线程并且需要处理它们。

对于不同的事物你可以选择不同层次的抽象,例如:

int main() {
auto f = std::async([](){ std::cout << "Don't tread on me\n" << std::flush; });
f.get(); // Wait for the task to complete
}

关于c++ - 为什么必须显式加入线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18519039/

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