#include <stdio.h> #include <unistd.h> #ifdef _OPENMP #include <omp.h> #endif int main(int argc, char* argv[]) { #ifdef _OPENMP double start_time = omp_get_wtime(); #pragma omp parallel num_threads(3) { /* Only one thread creates all the tasks */ #pragma omp single nowait { #pragma omp task sleep(1); printf("After launch of task1\n"); #pragma omp task sleep(2); printf("After launch of task2\n"); #pragma omp task sleep(1); printf("After launch of task3\n"); double end_time = omp_get_wtime(); printf("time to launch all tasks: %g\n", end_time - start_time); #pragma omp taskwait end_time = omp_get_wtime(); printf("time to finish all task: %g\n", end_time - start_time); } } /* After launch of task1 After launch of task2 After launch of task3 time to launch all tasks: 7.0396e-05 time to finish all task: 2.00029 */ #else printf("No OpenMP support\n"); #endif return 0; }