A.9 使用 single 指令

下面的示例演示 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();
}