C++11的chrono總結

C++11的chrono總結

chrono是C++11中的時間庫,提供計時,時鐘等功能。
chrono庫主要包含了三種類型:時間間隔Duration、時鐘Clocks和時間點Time point。

Douration

durqtion表示一段時間間隔,用來記錄時間長度,可以表示幾秒鐘、幾分鐘或者幾個小時的時間間隔,duration的原型是:
			template<class Rep,class Period=std::ratio<1>> class duartion; 
第一個模板參數Rep是一個數值類型,表示時鐘個數;第二個模板參數是一個默認模板參數std::ratio,它的原型是:
			template<std::intmax_t Num,std::intmax_t Denom=1> class ratio;
它表示每個時鐘週期的秒數,其中第一個模板參數Num代表分子,第二個模板參數Denom代表分母,分母默認值爲1,ratio代表的是一個分子除以分母的分數值
,比如ratio<1>代表一個時鐘週期是兩秒,ratio<60>代表了一分鐘,ratio<60*60>代表了一個小時,ratio<60*60*24>代表了一天。而ratio<1,1000>代表
的則是1/1000秒即一毫秒。標準庫爲了方便使用,就定義了一些常用的時間間隔,如時、分、秒、毫秒和納秒,在chono命名空間下,他們的定義如下:
typedef duration <Rep, ratio<3600,1>> hours;
typedef duration <Rep, ratio<60,1>> minutes;
typedef duration <Rep, ratio<1,1>> seconds;
typedef duration <Rep, ratio<1,10000> milliseconds;
typedef duration <Rep, ratio<1,1000000>> microseconds;
typedef duration <Rep, ratio<1,1000000000>> nanoseconds;

用法:可通過這些常用的時間間隔類型,我們能方便在線程中使用他們,比如線程的休眠,

std::this_thread::sleep_for(std::chrono::seconds(1)); //休眠1秒
std::this_thread::sleep_for(std::chrono::milliseconds(10)); //休眠10毫秒

Time point

time_point表示一個時間點,用來獲取1970.1.1以來的秒數和當前時間,可以做一些時間的比較和算術運算,可以和ctime庫結合起來顯示時間。
time_point必須要clock來計時,time_point有一個函數time_from_eproch()用來獲得1920年1月1日到time_point時間經過的duration。
原型爲:template <class Clock, class Duration=typename Clock::duration> class time_point;

Clocks

Clocks表示當前的系統時鐘,內部有time_point,duation,Rep,Period等信息,主要用來獲取當前時間,以及實現time_t和time_point的相互轉換。
Clocks包含三種時鐘:system_clock(從系統獲取的時鐘);steady_clock(不能被修改的時鐘);high_resolution_clock(高精度時鐘),
可以通過now()來獲取當前時間點。通過時鐘獲取兩個時間點之相差多少個時鐘週期,我們可以通過duration_cast將其轉換爲其它時鐘週期的duration:
std::chrono::duration_cast<std::chrono::mintes> time.count(); //轉換時間爲分單位
system_clock的to_time_t方法可以將一個time_point轉換爲ctime,而from_time_t方法則相反,將ctime轉換爲time_point。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章