【发布时间】:2013-08-13 19:03:17
【问题描述】:
例如,我希望每个线程在前一个线程完成之前不开始运行,是否有一个标志,例如thread.isRunning()?
#include <iostream>
#include <vector>
#include <thread>
using namespace std;
void hello() {
cout << "thread id: " << this_thread::get_id() << endl;
}
int main() {
vector<thread> threads;
for (int i = 0; i < 5; ++i)
threads.push_back(thread(hello));
for (thread& thr : threads)
thr.join();
cin.get();
return 0;
}
我知道线程是要同时运行的,但是如果我想控制顺序怎么办?
【问题讨论】:
-
听起来像是 XY 问题。为什么要控制订单?你的用例是什么?
-
如果您不希望一个线程在另一个线程完成之前运行,那么您可能不需要线程。只需编写两个函数调用,一个接一个。
-
这个问题,“我怎样才能使从一开始就为并发操作而设计的东西按顺序运行”这个问题经常出现。
标签: c++ multithreading c++11