Нет, это не делает глубокую копию.
Вы объявили пункт как const . Это означает, что он не может изменить объект, на который ссылается.
Кроме того, вы сделали const item = this.head;
, теперь предмет указывает на тот же объект, что и this.head
очков. Затем вы сделали this.head = this.head.next;
, это означает, что this.head
указывает на другой объект, а item
все еще указывает на первый объект.
Вам нужны функции 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 отличаются.