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)
还没有任何评论哟~
