OpenMP提供一种简单、简洁的方式,让你享受并行的快乐
例如

  1. 以下代码输出“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); }

  1. 2. OpenMP只需要一句,就可以将此代码改成并行版本。以下代码输出“0, 5, 1, 6, 2, 7, 3, 8, 4, 9,”
  2. ```cpp
  3. #pragma omp parallel for //OpenMP指令
  4. for(int i = 0; i < 10; ++i) {
  5. Test(i);
  6. }

与其他实现并发的手段一样,使用OpenMP时,也需要注意线程安全,而且要权衡是否能让你的代码变得更高效
OpenMP适用于以下场景

  1. 一个代码块重复被调用(调用次数多or每次耗时长)
  2. 被重复调用的代码块中,不存在线程安全问题or互斥量少的情形。也就是说,引入OpenMP也需要注意线程安全

参考文章

  1. C++中OpenMP的使用方法