C++连接多个线程

C++ Join multiple threads

本文关键字:线程 连接 C++      更新时间:2023-10-16

我想做一个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是整数,因此在这里没有差异。有关详细信息,请参阅此答案。