Udostępnij za pośrednictwem


A.9 używając pojedynczego dyrektyw

W poniższym przykładzie zademonstrowano single dyrektywy (ppkt 2.4.3 na stronie 15).W przykładzie, tylko jeden wątek (zwykle pierwszy wątek napotka single dyrektywy) drukuje komunikat postępu.Użytkownik musi nie wprowadzać żadnych założeń jak wątek, który będzie wykonywał single sekcji.Inne wątki będzie odsuwany o single sekcji i zatrzymać się na barierę na koniec single skonstruować.Jeśli inne wątki można kontynuować bez oczekiwania na wykonywaniu wątku single sekcji, nowait klauzula może być określona w single dyrektywy.

#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();
}