小编gms*_*777的帖子

OpenMP:锁定对单个数组元素的访问?

我是OpenMP的新手,所以这可能有一个简单的答案,但我找不到它.

假设我有以下C代码并希望使用OpenMP并行化它.A是一个对象数组,其中一些double值少于1个bucket是一个链表的数组,append将一个指向对象的指针添加到链表的末尾.

#pragma omp for 
for (i = 0; i < n; ++i) {
    x = (int) (A[i].val * NUM_BUCKETS);
    append(&A[i], buckets[x]);
} 
Run Code Online (Sandbox Code Playgroud)

问题是多个线程可能试图一次将项目附加到给定的桶.我可以使附加声明变得至关重要.但是,在我的应用程序中,我可能有大约1000个桶,所以大多数时候线程将在不同的桶上运行.

有没有办法对桶的各个元素强制执行锁定?还是其他一些处理方式?

c openmp

4
推荐指数
1
解决办法
5436
查看次数

标签 统计

c ×1

openmp ×1