/* * @@name: tasking.3c * @@type: C * @@compilable: yes * @@linkable: no * @@expect: success */ typedef struct node node; struct node { int data; node * next; }; void process(node * p) { /* do work here */ } void increment_list_items(node * head) { #pragma omp parallel { #pragma omp single { node * p = head; while (p) { #pragma omp task // p is firstprivate by default process(p); p = p->next; } } } }