ceph RWLock源码分析

ceph RWLock源码分析

源文件:
src/commom/RWLock.h

读写锁

class RWLock {
主要数据成员:
	pthread_rwlock_t L: pthread库中的读写锁
	string name: 读写锁的名称
	atomic nrlock, nwlock: 读锁和写锁的引用计数

主要成员函数:
	RWLock():
		读写锁的构造函数会根据输入的参数设置读写锁的属性,主要是防止长时间的读造成写的饿死情况.
	is_locked():
	is_wlocked():
	is_rlocked():
		判断锁的状态.
	unlock():
		读锁和写锁的解锁都基于它进行解锁操作
	get_read():
	put_read():
	try_get_read():
		读锁的lock, unlock和try_lock
	get_write():
	put_write():
	try_get_write():
		写锁的lock,unlock和try_lock
	get(bool):
		参数为true,写锁加锁,否则读锁加锁
}

读锁

class RLocker {
	构造函数加锁,析构函数解锁,主要用于语句块中
}

写锁

class WLocker {
	构造函数加锁,析构函数解锁,主要用于语句块中
}

Context

Context和RWLock基本相同,只不过多了一个写锁强占读锁的函数.

class Context {
	void promote(): 读锁可以被写锁强占.
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值