Как использовать, привязывают OpenMP?

Нет, это не делает глубокую копию.
Вы объявили пункт как const . Это означает, что он не может изменить объект, на который ссылается.

Кроме того, вы сделали const item = this.head;, теперь предмет указывает на тот же объект, что и this.head очков. Затем вы сделали this.head = this.head.next;, это означает, что this.head указывает на другой объект, а item все еще указывает на первый объект.

23
задан nbro 29 October 2017 в 21:44
поделиться

2 ответа

Вам нужны функции OMP_SET_LOCK/OMP_UNSET_LOCK: https://computing.llnl.gov/tutorials/openMP/#OMP_SET_LOCK. В принципе:

omp_lock_t writelock;

omp_init_lock(&writelock);

#pragma omp parallel for
for ( i = 0; i < x; i++ )
{
    // some stuff
   omp_set_lock(&writelock);
    // one thread at a time stuff
    omp_unset_lock(&writelock);
    // some stuff
}

omp_destroy_lock(&writelock);

Большинство процедур блокировки, таких как pthreads semaphores и sysv semaphores, работают по подобной логике, хотя конкретные вызовы API отличаются.

44
ответ дан 29 November 2019 в 00:43
поделиться
#pragma omp critical
{
    // write to file here
}
17
ответ дан 29 November 2019 в 00:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: