c++ - 并行多次调用一个函数

标签 c++ c multithreading fork

我想多次调用具有不同 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/

相关文章:

c++ - 动态调度 OOP

c++ - 在 C++ 中访问 lambda 之外的 lambda 捕获初始化变量

c - 链接器找不到对作为参数传递给 gcc 的 .a 库的引用

.net - 双重检查锁定中的内存模型保证

java - 如何为这个 CPU 密集型 Java 应用程序提供 GUI?

使用 pop_back 的 C++ 析构函数

python - 计算 sigmoid 最快的方法是什么?

c - 如何用 C 创建 Protocol Buffer 消息数组

c - 下面用 C 编写的代码的求值顺序是什么?

c# - 线程池的处理器亲和性和线程创建