给定这个 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/