執行緒管理物件,本身攜帶程序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...