ceph thread源码分析

简介

在ceph中,很多任务都是用thread实现的,比如说adminsocket, log, timer等.可以说,thread是ceph中最基本的模块,因此我们的ceph源码分析从thread开始.本篇主要介绍三部分内容:

  1. thread
  2. mutex
  3. condition variable

thread

源码文件:

  1. src/common/thread.h
  2. src/common/thread.cc
class Thread
主要数据成员:
	pthread_t thread_id:  线程id
	pid_t pid: 线程pid,由linux的系统调用gettid()返回,其它系统无此系统调用,主要用于设置线程的调度优先级和cup亲和性
	int ioprio_classs, ioprio_priority: 线程的调度优先级
	int cupid: 线程的cpuid,即亲和性
	const char *thread_name: 线程名称,长度必须小于16

主要成员函数:
	create(): 相当于pthread_create,创建线程,并执行线程的启动函数 
 	join(): 相当于pthread_join, 销毁线程
 	kill(): 相当于pthread_kill

重点是线程的创建:
create(): 
	设置thread_name,并调用try_create()创建线程
try_create():
	设置线程属性,主要是线程栈的大小stacksize.
	设置线程的信号集屏蔽字.
	调用pthread_create()创建线程.即:
	pthread_create(&thread_id, thread_attr, _entry_func, (void *)this)
	线程启动函数为_entry_func, 参数为this.
entry_func():
	调用entry_wrap
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值