ceph threadpool源码分析

ceph线程池

线程模型主要有manager/worker, pipeline, peer三种,参见https://computing.llnl.gov/tutorials/pthreads/.ceph的线程池是典型的manager/worker:即有一个manager(主进程或者主线程)负责线程池创建,开启,暂停,恢复,终止等管理操作,相反,线程池中的所有线程都属于worker线程,负责执行真正的任务.

// ceph线程池类
class ThreadPool:
主要数据成员:
	CephContext *cct
	string name: 线程池的名称
	string thread_name: 线程池中的线程的名称
	string lockname: 锁的名称
	Mutex _lock: 锁
	Cond _cond:
	Cond _wait_cond:
	bool _stop: 表示线程池是否处于终止状态
	int _pause: 表示线程池中的线程是否是处于暂停状态
	int _draining: 表示任务队列中的任务是否被全部执行完毕
	int ioprio_class, ioprio_priority
	unsigned _num_threads 线程池中的线程数量
	string _thread_num_option 
	const char **_conf_keys
	vector<WorkQueue_ *> work_queues 线程池处理的工作队列集,用vector来表示
		vector中的每个元素都是一个队列
	int last_work_queue 上一次处理的队列号
	set<WorkThread *> _threads; 线程池中的线程集
	list<WorkThread *> _old_threads; 线程池中多余的线程,需要调用join_old_threads()来释放
	int processin
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值