#include <stdio.h>

#ifdef _OPENMP
    #include <omp.h>
#endif

void print_omp_info(const char text[]) {
    #pragma omp critical
    printf("%i/%i: %s\n", omp_get_thread_num(), omp_get_num_threads(), text);
}

int main(int argc, char *argv[]) {
    #ifdef _OPENMP
        printf("Test of independent sections.\n");
	printf("\n");

        /* parallel sections can be executed in parallel
           each section is executed by on thread */
        #pragma omp parallel sections
        {
            #pragma omp section
            print_omp_info("task1");

            #pragma omp section
            print_omp_info("task2");

            #pragma omp section
            print_omp_info("task3");
        }
/*

Test of independent sections.

0/4: task1
1/4: task2
2/4: task3

*/

    #else
        printf("No OpenMP support\n");
    #endif

    return 0;
}