本檔案使用的是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 原子和比較操作 如...