// 工作分区(sections)是只利用OpenMP的sections编译指导语句,将用section
// 语句指定的内部代码,划分成多个工作区分配给线程组中的各个线程,
// 不同的section由不同的线程执行。各线程工作量的总合等于原来的
// 的工作量。这显然比并行区域所做的重复性劳动更有意义
#pragma omp parallel sections
{
#pragma omp section
{
// 如果omp块里面的语句多于一句,必须加上{},作为线程的函数体
cout << "section 1 thread = " << omp_get_thread_num() << endl;
// 在此处加上Sleep()只是挂起当前的线程,主线程还会继续运行
// Sleep在此起不到同步各个线程的作用
Sleep(10);
}
#pragma omp section
{
cout << "section 2 thread = " << omp_get_thread_num() << endl;
Sleep(10);
}
#pragma omp section
cout << "section 3 thread = " << omp_get_thread_num() << endl;
}
OpenMP Sections
最新推荐文章于 2021-06-26 14:26:10 发布