muduo原始碼解析1 timestamp類

2022-08-23 18:09:12 字數 1759 閱讀 5764

class timestamp:public

mymuduo::copyable,

public boost::equality_comparable,

public boost::less_than_comparable;

主要是實現了時間戳的相關操作,例如時間戳的格式化,返回當前時間戳等等。

private

: int64_t m_microseconds;

//資料成員,表示時間戳的微秒數

public:  

static

const

int microsecinsec=1000*1000;//

1秒=1000*1000微妙

timestamp():m_microseconds(0

);

//建構函式,設定mircroseconds值

explicit

timestamp(int64_t ms):m_microseconds(ms);

//交換兩個timestamp物件的值

void swap(timestamp&that);

//用std::string形式返回,格式[millisec].[microsec]

string tostring() const

;

//格式, "%4d年%02d月%02d日 星期%d %02d:%02d:%02d.%06d",時分秒.微秒

string toformattedstring(bool ifshowmicrosec=true) const;  

//判斷當前時間錯是否合法,即是否》0

bool valid() const;  

//返回當前時間戳的微妙

int64_t microsecsinceepoch() const;  

//返回當前時間戳的秒數

time_t secsinceepoch() const;  

//返回當前時間所在的時間戳

static

timestamp now();

static

timestamp invalid();

//返回time_t所在的時間戳

static

timestamp fromunixtime(time_t t);

//返回time_t以microsec為偏移所在的時間戳

static timestamp fromunixtime(time_t t,int microsec);

應當注意timestamp繼承了boost等於和小於類,為了實現timestamp的比較操作符,應當過載timestamp的《和==操作符。

//

繼承了boost的比較類,需要自己實現《和==操作符的過載

inline bool

operator

<(timestamp l,timestamp r)

inline

bool

operator==(timestamp l,timestamp r)

//返回兩個時間戳的差,用秒的形式返回

inline double

timedifference(timestamp high,timestamp low)

//返回乙個時間戳加上給定秒數的新的時間戳

inline timestamp addtime(timestamp ts,double

sec)

muduo原始碼解析之EventLoopThread

回到tcpserver,我們記得裡面有乙個eventloopthreadpool,根據名字,這是乙個執行緒池,它主要用於管理所有的eventloop,每個eventloop對應乙個執行緒。當新連線到來時,acceptor事件分發器將連線分發到合適的執行緒中。執行緒裡面核心是執行eventloop類裡...

python入門 1模組 1 time

1 簡介 time模組提供兩種時間的表示方式 第一種 是時間戳方式 相對於1970年1月1日 00 00 00的秒數偏移 第二種 以陣列形式表示 struct time 共有九個元素 2 函式介紹 2.1 asctime asctime tuple string 將乙個struct time 預設為...

讀Muduo原始碼筆記 1

物件銷毀時出現的競態條件 執行緒安全的類 簡單的執行緒安全類 class counter int value const int getandincrease private int value mutable mutexlock mutex int counter value const int ...