OpenMP提供一种简单、简洁的方式,让你享受并行的快乐
例如
- 以下代码输出“0, 1, 2, 3, 4, 5, 6, 7, 8, 9,” ```cpp void Test(int n) { //…进行一些很耗时的计算 printf(“%d, “, n); }
for(int i = 0; i < 10; ++i) { Test(i); }
2. OpenMP只需要一句,就可以将此代码改成并行版本。以下代码输出“0, 5, 1, 6, 2, 7, 3, 8, 4, 9,”```cpp#pragma omp parallel for //OpenMP指令for(int i = 0; i < 10; ++i) {Test(i);}
与其他实现并发的手段一样,使用OpenMP时,也需要注意线程安全,而且要权衡是否能让你的代码变得更高效
OpenMP适用于以下场景
- 一个代码块重复被调用(调用次数多or每次耗时长)
- 被重复调用的代码块中,不存在线程安全问题or互斥量少的情形。也就是说,引入OpenMP也需要注意线程安全
