ceph thread原始碼分析
阿新 • • 發佈:2018-11-20
簡介
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