使用openmp创建共享锁
Creating shared lock using openmp
我通常使用
#pragma omp critical(lock)
{ ... }
指令,当我需要确保只有一个线程在执行给定的代码时。
因此,我正在寻找一种使用类似方法实现共享锁和独占锁的方法。我有多个线程可以读取或写入一个变量。当一个线程正在写入时,它将阻止所有其他线程进行读取或写入。然而,读取变量不应该阻塞任何内容。我该怎么做?
不幸的是,OpenMP不支持读写器锁。您可以使用其他库,如提供shared_lock的Boost。
相关文章:
- 使用Boost Interprocess创建托管共享内存需要很长时间
- 在为LINUX创建共享库时,如何避免STL的私有/弱副本
- 具有两个独占锁组的共享锁
- C++共享库:创建和使用
- 在共享缓冲区内存中创建 ::std::string 对象
- 如何创建一个共享对象与另一个.所以在Cmake
- (共享)C++中的互斥锁
- 多线程减慢程序速度:无错误共享,无互斥锁,无缓存未命中,无小工作量
- 是否可以/希望创建不可复制的共享指针模拟(以启用weak_ptr跟踪/借用类型语义)?
- 共享内存中的健壮互斥锁不是那么健壮
- 如何防止 CMake 在构建时(而不是在安装时)为共享库创建符号链接?
- 在新作用域中使用unique_lock是否等效于在使用共享资源的工作结束时解锁调用
- 使用CPACK时,请防止为已安装的共享库创建Namelink
- 使用openmp创建共享锁
- 使用共享指针创建的链表数组
- 如何*首先*获得独占锁,然后在不释放锁的情况下降级为共享锁
- std::shared_timed_mutex上的共享锁可以升级为排他锁吗?
- 如何在c++11和c++98的共享库创建中使用cmake 2.8.2进行单次构建时每次重新编译源文件
- 为什么共享锁只能持有一个可升级锁
- 如何在共享内存的同一区域上工作的两个进程之间共享锁