muduo庫分析 base篇(4) Thread

2021-08-19 18:38:06 字數 1623 閱讀 1404

執行緒管理物件,本身攜帶程序tid,需要執行的函式

標頭檔案:

typedef boost::functionthreadfunc;	//無引數無返回執行緒函式

explicit thread(const threadfunc&, const string& name = string()); //別名防止拷貝函式

countdownlatch latch_; //用於多執行緒等待滿足條件後同時工作

static atomicint32 numcreated_; //原子計數器,記錄執行緒個數

在currentthread命名空間中定義了執行緒私有資源,用於儲存執行緒相關id,日誌資料,名字等等

cpp檔案:

namespace currentthread

pid_t gettid()

void afterfork()

class threadnameinitializer

};

threadnameinitializer init;//呼叫

struct threaddata

void runinthread()

//指向tid後修改,再清零指標,記憶體已經修改好,執行緒物件仍然持有指標

void currentthread::cachetid()	//儲存一次tid
bool currentthread::ismainthread()//判斷thread是否屬於當前執行緒
void currentthread::sleepusec(int64_t usec)	//執行緒睡眠

; //系統呼叫所需結構體

ts.tv_sec = static_cast(usec / timestamp::kmicrosecondspersecond);

ts.tv_nsec = static_cast(usec % timestamp::kmicrosecondspersecond * 1000);

::nanosleep(&ts, null);

}

thread::~thread()

}

int num = numcreated_.incrementandget();	//原子加一後返回值
void thread::start()

多執行緒呼叫fork函式可能導致死鎖,因為鎖的狀態會複製,但是執行緒只會複製呼叫fork的執行緒,其他執行緒不會複製

muduo庫學習筆記七 base庫之Mutex

mutex互斥量 muduo庫中的封裝為mutexlock類與mutexlockguard類。類圖 繼承boost noncopyable,物件語義不能拷貝,該類主要是對一系列系統執行緒函式pthread mutex 的封裝。私有資料成員 mutex 儲存linux執行緒互斥量pthread mut...

muduo庫學習篇 Thread類學習

多執行緒程式設計在任何語言中基本都是乙個繞不開的話題,如果我們想要發揮計算機多核的優勢,提高程式的響應速度,就一定要使用到多執行緒程式設計技術。因此muduo庫一定少不了thread的封裝,接下來我們開始學習muduo庫thread類的封裝。如果讓我自己設計乙個thread類的話我能想到的有哪些 上...

muduo網路庫使用

之前粗略看過一段時間的nginx原始碼,對基於c實現的web server有了初步的理解。現在結合muduo網路庫來學習下c 的web server。首先是muduo網路庫的安裝和環境搭建 可參見muduo網路庫是給出了很多的例子,我首先是閱讀了最簡單的echo的原始碼,然後自己編寫makefile...