欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-12 19:54:43
...
// 并行区域之间的工作共享方法
// 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