您的位置:首页 > 运维架构

OpenMP 并行区域之间的工作共享方法

2017-05-28 17:42 411 查看
// 并行区域之间的工作共享方法
// 1.工作队列:工作队列的基本工作过程即为维持一个工作的队列,
// 线程在并行执行的时候,不断从这个队列取出相应的工作完成,
// 直到队列为空为止
// 2.根据线程号分配任务.由于每个线程在执行的过程中的线程标识号
// 是不同的,可以根据这个线程标识号来分配不同的任务
//#pragma omp parallel private(myid)
//      {
//          int nthreads = omp_get_num_threads();
//          int myid = omp_get_thread_num();
//          work_done(myid, nthreads);          // 分配任务函数
//      }

// 3.使用循环语句分配任务
#pragma omp parallel num_threads(2)
{
cout << "outside loop thread = " << omp_get_thread_num() << endl;
#pragma omp for
for (int i = 0; i < 4; i++)
cout << "inside loop i = " << i << " thread = "
<< omp_get_thread_num() << endl;
}

// 4.工作分区编码
#pragma omp parallel sections
{
#pragma omp section
cout << "section 1 thread = " << omp_get_thread_num() << endl;
#pragma omp section
cout << "section 2 thread = " << omp_get_thread_num() << endl;
#pragma omp section
cout << "section 3 thread = " << omp_get_thread_num() << endl;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  openmp