c++ - 使用openmp创建共享锁

标签 c++ locking openmp critical-section

我通常使用

#pragma omp critical(lock)
{ ... }

指令,当我需要确保只有一个线程在执行一段给定的代码时。

所以我正在寻找一种使用类似方法实现共享锁和独占锁的方法。我有多个线程可以读取或写入一个变量。当一个线程正在写入时,它将阻止所有其他线程读取或写入。但是读取变量不应该阻止任何东西。我该怎么做?

最佳答案

不幸的是,OpenMP 不支持读写锁。您可以改用其他库,例如提供 shared_lock 的 Boost .

关于c++ - 使用openmp创建共享锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12348983/

相关文章:

c++ - 安全使用 std::tmpnam

python - 查询Python的threading.Lock是否加锁

php - InnoDB中具有表锁的MySQL/InnoDB事务

c++ - OpenMP 最小值缩减和 std::min

c - 如何使用 OpenMP 从 0-1 数组中提取所有非零元素的索引?

openmp - omp 并行 for 循环(减少以查找最大值)比串行代码运行得慢

c++ - 小对象分配器

c++ - 如何解决 : undefined reference to `non-virtual thunk to ...`

sql-server - 解释 SQL Server 中的锁定行为

c++ - 从 lambda 表达式创建仿函数