我已经使用OpenMP和"pragma omp for"循环,并且现在想尝试OpenMP任务.但是一个简单的程序,它应该并行运行2个任务似乎不起作用.我是否误解了任务的使用或这里有什么问题?
#include<iostream>
#include<omp.h>
//ubuntu 12.04 LTS, gcc 4.6.3
//g++ test_omp.cpp -fopenmp
int main()
{
#pragma omp parallel
{
#pragma omp single
{
#pragma omp task
{
while(true)
{
usleep(1e6);
#pragma omp critical (c_out)
std::cout<<"task1"<<std::endl;
}
}
#pragma omp task
{
while(true)
{
usleep(1e6);
#pragma omp critical (c_out)
std::cout<<"task2"<<std::endl;
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
输出是:task1 task1 task1 .....
所以第二个任务没有运行.