C++加入多线程

标签 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++,后者的性能应该更高。

最佳答案

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

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/

相关文章:

java - 在不定期检查 Activity 状态的情况下杀死线程

node.js - 工作线程在第一条消息后不会响应?

c++ - 如何在创建范围结束时自动从 Singleton Manager 类中删除 shared_ptr

c++ - 使用外力时确定球体与平面之间的静止接触

android - 如何将 Runnable 对象传递给处理程序?

c++ - CWinThread::PumpMessage 做什么

wpf - 我可以从工作线程初始化 ViewModel 吗?

c++ - 自动阈值分割

c++ - 学习递归 : How can I locate a substring index within a string without using find?

c++ - 将 std::vector<int> 项传递给可变参数函数