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;
}
推荐阅读