C ++加入多个线程

时间:2015-12-07 20:50:22

标签: c++ multithreading

我想做一个创建更多线程的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++ --debug-brk的{​​{1}},应该更高效。

1 个答案:

答案 0 :(得分:6)

你的问题是你开始一个线程,并在开始下一个线程之前加入它。你应该这样做:

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