使用单个指令的A.9
下面的示例演示 single 指令 (在第 15 页) 的第2.4.3部分 。 在此示例中,只有一个线程 (最常用 single 指令) 的第一个线程进度消息打印。 用户不能使线程上执行 single 部分的任何假设。 其他线程将跳过 single 部分和停止在关卡在 single 构造结束时。 如果其他线程可以执行,而不必等待执行 single 部分的线程, nowait 子句。 single 指令中指定。
#pragma omp parallel
{
#pragma omp single
printf_s("Beginning work1.\n");
work1();
#pragma omp single
printf_s("Finishing work1.\n");
#pragma omp single nowait
printf_s("Finished work1 and beginning work2.\n");
work2();
}