Поделиться через


A.9 Использование отдельных директив

В следующем примере демонстрируется single директива (раздел 2.4.3 на странице 15). В примере только один поток (обычно первый поток, который обнаруживает single директива) выводит сообщение о ходе выполнения. Пользователь не должен выполнять любые допущения о которых выполняется поток single раздел. Все другие потоки пропустят single раздел и stop в барьере в конце single конструкция. Если другие потоки могут продолжаться без ожидания выполнения потока single раздел, a 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();
}