RIc*_*ams 9 c parallel-processing
我的C代码中有一个for循环,如下所示:
for(i=0; i<100000; i++){
a[i] = simulate(); // simulate() function simulates some system
}
Run Code Online (Sandbox Code Playgroud)
我们看到每次迭代的计算都与其他迭代无关(元素的顺序a[]对我来说并不重要).我想使用多线程并行化这个for循环的计算.我不完全清楚如何在C中这样做?我有一台8处理器的机器,所以我可以并行运行8个线程.
Mys*_*ial 14
在C*中没有可移植的并行方法.但是,OpenMP标准得到了广泛支持:
#pragma omp parallel for
for(i=0; i<100000; i++){
a[i] = simulate(); // simulate() function simulates some system
}
Run Code Online (Sandbox Code Playgroud)
根据您的编译器,将有一个标志,您必须设置该标志以启用OpenMP支持:
/openmp-fopenmp以及如果您希望访问某些OpenMP功能的标题:
#include <omp.h>
Run Code Online (Sandbox Code Playgroud)
编辑:
*(最近批准的)C11标准支持线程通过<threads.h>.