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(): 读锁可以被写锁强占.
}

你可能感兴趣的:(Ceph)