我想做一个创建更多线程的 for 循环。
我试过:
int i;
for (i = 0; i < 10; i++) {
thread t1(nThre);
t1.join();
cout << "Joined thread n'" << i << '\n';
}
但它不起作用。 nThre
按顺序调用(这是一个简单的 void
例程)。
我也在问我是否可以使用预增量,因为 i
只是一个 int
,所以:
++i
代替了 i++
,后者的性能应该更高。
最佳答案
您的问题是您启动了一个线程,并在启动下一个线程之前加入了它。你应该这样做:
int i;
vector<thread> threads;
for (i = 0; i < 10; i++) {
threads.push_back(thread(nThre));
cout << "Started thread n'" << i << "\n";
}
for (i = 0; i < 10; i++) {
threads[i].join();
cout << "Joined thread n'" << i << "\n";
}
首先,您启动所有线程,然后等待它们完成。
对于i++
和++i
的区别,由于i
是一个整数,这里没有区别。参见 this answer了解更多详情。
关于C++加入多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34142960/