我想多次调用具有不同 arg 值的函数。为了使执行速度更快,我想调用该函数而不考虑其实现。
在循环内,我将参数传递给函数并立即调用它,我的程序不应等待函数执行并再次循环,而是不应认为该函数尚未完成第一个循环,它应该继续执行并一次又一次调用该函数,直到循环结束。
如何使用 fork 和线程来做到这一点,哪一个会更快并且代码框架会有帮助? 假设我的函数是 void foo(arg1,arg2)
最佳答案
如果它是一个计算密集型方法,那么为每个调用生成一个线程/进程并不是一个好主意(事实上,这从来都不是一个好主意!)。
您可以使用 openmp 有效地并行化 for 循环:
#pragma omp parallel for
for(int i = 0; i < N; i++)
{
int arg1 = ...
int arg2 = ...
foo(arg1, arg2);
}
这将根据可用 CPU 核心的数量创建多个线程,然后在它们之间分割迭代。您可以使用 schedule
子句进一步调整调度。
关于c++ - 并行多次调用一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10217719/