muduo庫原始碼學習 base Logfile

2021-08-10 19:11:57 字數 1109 閱讀 8261

本檔案使用的是c++17版本

#ifndef muduo_base_logfile_h

#define muduo_base_logfile_h

#include #include #include namespace muduo

class logfile : noncopyable//檔案日誌類;}

#endif // muduo_base_logfile_h

#include #include #include #include #include #include using namespace muduo;

logfile::logfile(const string& basename,

size_t rollsize,

bool threadsafe,

int flushinterval,

int checkeveryn)

: basename_(basename),

rollsize_(rollsize),

flushinterval_(flushinterval),

checkeveryn_(checkeveryn),

count_(0),

mutex_(threadsafe ? new mutexlock : null),//是否要求執行緒安全

startofperiod_(0),

lastroll_(0),

lastflush_(0)

logfile::~logfile()

else }

void logfile::flush()//立刻寫到檔案

else }

else

else if (now - lastflush_ > flushinterval_)//達到重新整理間隔}}}

bool logfile::rollfile()//嘗試滾動檔案,對時間再檢查一次

return false;//不應該發生

}string logfile::getlogfilename(const string& basename, time_t* now)

muduo庫學習筆記七 base庫之Mutex

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

muduo原始碼筆記 base Timestamp

timestamp表示的是utc時間,最小可表示微秒 us 資料成員microsecondssinceepoch 使用int64 t long long 表示物件,因此作者建議將此值按值傳遞,這樣可以直接存放在暫存器中,提高訪問速度。ifndef muduo base timestamp h def...

muduo原始碼筆記 base Atomic

atomic是對整數 int 原子性操作的乙個封裝。使用了gcc原子性操作,效率比普通加鎖要高。這裡主要是使用了三個函式 1 原子自增操作 將 ptr加上value,並返回 ptr原來的值 type sync fetch and add type ptr,type value 2 原子和比較操作 如...