1. 程式人生 > >ceph thread原始碼分析

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()建立執行緒.
	執行緒啟動函式為_entry_func, 引數為this

mutex

原始碼檔案

  1. src/common/mutex.h
  2. src/common/mutex.cc

condition variable

原始碼檔案

  1. src/common/cond.h