gpt4 book ai didi

c++ - OpenMP:用锁替换临界区

转载 作者:行者123 更新时间:2023-11-28 04:22:34 29 4
gpt4 key购买 nike

如何用 omp_locks 替换临界区?

我的关键部分的原始代码是这样的,它工作正常:

#pragma omp for
for (int i = 0; i < n; i++){
// do thread-safe pre-processing

#pragma omp critical
{
// do critical section stuff
}
}

现在我做同样的事情,但用锁代替:

omp_lock_t lock;
omp_init_lock(&lock);

#pragma omp for
for (int i = 0; i < n; i++){
// do thread-safe pre-processing

omp_set_lock(&lock);

// do critical section stuff

omp_unset_lock(&lock);
}
omp_destroy_lock(&lock);

但由于某种原因,我得到了错误的结果。我在这里做错了什么吗?

此外,当我尝试使用多个锁时(例如,对要写入的数组的每个元素),它似乎进入了死锁状态?

最佳答案

粗心的错误:定义锁应该在并行 block 之外

关于c++ - OpenMP:用锁替换临界区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55092647/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com