简介
ceph中的很多任务都是用thread实现的,比如说adminsocket, log, timer等.可以说,thread是ceph中最基本的模块,因此我们的ceph源码分析从thread开始.本篇主要介绍三部分内容:
- thread
- mutex
- condition variable
thread
源码文件:
- src/common/thread.h
- 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()创建线程.
线程启动函数为_entry_func, 参数为this
mutex
源码文件
- src/common/mutex.h
- src/common/mutex.cc
condition variable
源码文件
- src/common/cond.h