apt-get install libomp-dev
//omp.cc
#include <iostream>
#include <omp.h>
int main()
{
#pragma omp parallel for
for (char i = 'a'; i <= 'z'; i++)
std::cout << i << std::endl;
return 0;
}
// g++ omp.cc -fopenmp -o omp
OpenMP 对可以多线程化的循环有如下五个要求:
- 循环的变量(就是i)必须是有符号整形,其他的都不行。
- 循环的比较条件必须是< <= > >=中的一种
- 循环的增量部分必须是增减一个不变的值(即每次循环是不变的)。
- 如果比较符号是< <=,那每次循环i应该增加,反之应该减小
- 循环必须是没有奇奇怪怪的东西,不能从内部循环跳到外部循环,goto和break只能在循环内部跳转,异常必须在循环内部被捕获。OpenMP 负载均衡使用下面的语法
#pragma omp parallel for schedule(kind [, chunk size])