对于一些比较消耗时间的for循环,采用openMP的优化代码
首先编译器是vs2017的基础上,项目右键—>属性—>c/c++—>语言—>支持omp
常见指令包括
#pragma omp parallel
{
每个线程执行大括号内的代码
}
带有for制导的语句:
1. #pragma omp parallel for
for()
//作用域只是紧跟着的那个for循环
2.#pragma omp parallel
{
#pragma omp for
for()
}
//在整个并行块中可以出现多个for制导指令
如果不使用for制导语句,则每个线程都执行整个for循环。所以,使用for制导语句将for循环拆分开来尽可能平均地分配到各个线程执行
int main()
{
omp_set_num_threads(2); //四个线程 不超过CPU核心数
#pragma omp parallel
for (int i = 0; i < 10; i++)
{
//cout << "i = " << i << ", I am Thread " <&l