mirror of
https://github.com/OpenMP/Examples.git
synced 2025-04-22 05:41:23 +01:00
35 lines
610 B
C
35 lines
610 B
C
/*
|
|
* @@name: tasking.3
|
|
* @@type: C
|
|
* @@operation: compile
|
|
* @@expect: success
|
|
* @@version: omp_3.0
|
|
*/
|
|
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;
|
|
}
|
|
}
|
|
}
|
|
}
|