A.9 Using single Directives
The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.
The following example demonstrates the single
directive (Section 2.4.3 on page 15). In the example, only one thread (usually the first thread that encounters the single
directive) prints the progress message. The user must not make any assumptions as to which thread will execute the single
section. All other threads will skip the single
section and stop at the barrier at the end of the single
construct. If other threads can proceed without waiting for the thread executing the single
section, a nowait
clause can be specified on the single
directive.
#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();
}