OpenMp: single nowait directive是如何parallelize链表访问的
#pragma omp parallel
{
// Walking a standard linked-list in parallel
for(LList *listWalk = listHead; listWalk != NULL;
listWalk = listWalk->next)
{
#pragma omp single nowait
{
process2(listWalk);
}
}
}
对于上面的代码,single nowait directive可以是并行的process该linked-list的元素,我想请问single nowait 指令是如何保证该语义的,而编译器内部实现细节又大概是如何的?