有人可以发布一个在 C++ 中启动两个(面向对象)线程的简单示例。
我正在寻找实际的 C++ 线程对象,我可以在其上扩展运行方法(或类似的东西),而不是调用 C 风格的线程库。
我省略了任何特定于操作系统的请求,希望回复的人会回复跨平台库以供使用。我现在只是明确表示。
原文由 Zak 发布,翻译遵循 CC BY-SA 4.0 许可协议
#include <thread>
#include <iostream>
#include <vector>
using namespace std;
void doSomething(int id) {
cout << id << "\n";
}
/**
* Spawns n threads
*/
void spawnThreads(int n)
{
std::vector<thread> threads(n);
// spawn n threads:
for (int i = 0; i < n; i++) {
threads[i] = thread(doSomething, i + 1);
}
for (auto& th : threads) {
th.join();
}
}
int main()
{
spawnThreads(10);
}
原文由 Caner 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
创建一个您希望线程执行的函数,例如:
现在创建
thread
对象,该对象最终将调用上述函数,如下所示:(您需要
#include <thread>
才能访问std::thread
类。)构造函数的第一个参数是线程将执行的函数,然后是函数的参数。线程在构造时自动启动。
如果稍后您想等待线程完成执行该函数,请调用:
(加入意味着调用新线程的线程将等待新线程完成执行,然后再继续自己的执行。)
编码
有关 std::thread 的更多信息在这里
-std=c++0x -pthread
编译。