Advertisement

C++并发编程中的读写锁(C++17版本)

阅读量:

STL 与 Boost 均引入了 shared_mutex 这一机制,用于应对「读者-写者」问题(需采用C++17或更高版本实现)。尽管该名称在表达上略显不够直观,相较于 pthread 中直接称为「读写锁」的方式,其命名方式稍显晦涩。

所谓「读写锁」,指的是该锁可以被多个读取操作同时持有,但仅允许单一的写入操作进行锁定。这里提到的「多个读者、单个写者」概念,并非意味着程序中只能存在一个写入线程,而是强调在任意时刻不允许出现多个写入操作同时进行的情况。

接下来通过一个计数器的实例来进一步说明。

复制代码
 class Counter {

    
 public:
    
   Counter() : value_(0) {
    
   }
    
  
    
   // Multiple threads/readers can read the counter's value at the same time.
    
   std::size_t Get() const {
    
     std::shared_lock<std::shared_mutex> lock(mutex_);
    
     return value_;
    
   }
    
  
    
   // Only one thread/writer c

全部评论 (0)

还没有任何评论哟~