c++运行并发for循环,甚至可能吗?

标签 c++ for-loop

给定这个 for 循环:

std::vector<std::string> V={"element1","element2","element3"};

for(int i=V.size(); i--;)
{
 std::cout<<i<<std::endl;
}

是否可以同时运行 for 循环的每个循环?所以每个 std::cout 都同时发生?

我有一个函数指针 vector ,我需要循环并同时执行所有这些指针,不是一个接一个。

注意:在这种情况下,std::thread、std::async 没有帮助,因为我不知道 vector 的大小,因此必须在每个循环中创建一个线程并运行它。这不会导致并发。

最佳答案

这是 OpenMP 的作品:

#pragma omp parallel for
for(int i = 0; i < V.size(); ++i)
{
    std::cout<<i<<std::endl;
}

这使用固定的线程数(通常是 CPU 线程数)。如果 V.size() 大于它,则不会同时调用所有任务。他们将等待可用的线程。

如果您不会使用 OpenMP,第三方库和框架可以帮助您。

关于c++运行并发for循环,甚至可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39593284/

相关文章:

c++ - 更改 syslog 日志路径

c++ - QPushButton - 如何通过 PushButton 在行编辑框中附加文本字符串

r - ifelse 函数代替 for 循环

linux - 定义范围的 bash for 循环不起作用

java - 打印所有有序的 3 元组

Javascript for 循环未正确循环

java - 使用数组查找最大数字

C++/Qt QDomDocument : iterate over all XML Tags

c++ - 基于随机比特流生成随机浮点值

c++ - 识别字符串中的字符