Boost庫的timer類講解

2021-07-27 21:58:45 字數 1517 閱讀 1192

一直以來,c++對時間的處理都不是很理想,而且時間和日期在工作中又是我們經常遇到的,故而我們只能求助於c語言的笨拙的函式。而boost庫卻完美地使用timer,date_time和chrono解決了這個問題。本文我們只介紹timer類。

以下是boost_1_63_0版本中的timer類的去除注釋、去除掉注釋掉的**的原始碼

#ifndef boost_timer_hpp

#define boost_timer_hpp

#include #include #include # ifdef boost_no_stdc_namespace

namespace std

# endif

namespace boost

void restart()

double elapsed() const

double elapsed_max() const

double elapsed_min() const

private:

std::clock_t _start_time;

};}#endif

timer計時器使用了標準標頭檔案裡的clock()函式,這個函式返回從「開啟這個程式程序」到「程式中呼叫clock()函式」時之間的cpu時鐘計時單元(clock tick)數,在msdn中稱之為掛鐘時間(wal-clock)。每秒的clock由巨集clocks_per_sec定義。

timer()建構函式以當前的clock數作為計時起點,儲存到私有成員變數:_start_time中;restart()則重置_start_time重新開始計時;elapsed()這個函式的作用是獲取以秒為單位的已經流失的時間。

elapsed_max()使用了標準庫中的極限類numeric_limits,返回時間的最大值。

elapsed_min()返回timer能夠測量的最小時間單位,是clocks_per_sec的倒數。

#include #include using namespace boost;

using namespace std;

int main()

執行結果如下

我們都可以看到,timer類中並沒有析構函式,原因很簡單,因為_start_time僅僅是個clock_t型別的成員變數,根本就沒有資源可以釋放。timer類的精度依賴於作業系統或者編譯器,因此它並不適合高精度的時間測量,同時也難以做到跨平台。

Boost中timer的簡易用法

boost asio deadline timer timer timer io service timer expires from now boost posix time seconds 1 timer async wait boost bind sender handle timeout,t...

Boost庫使用 date time類庫

boost庫中使用了timer date time chrono處理時間與日期的問題。在上層開發中,經常碰到不同時間體系的處理,如格里高利歷 utc等,date time解決了大部分蕾絲的問題,是乙個較為全面 靈活的時間和日期類庫,並且可以與c的傳統時間結構tm相互轉換,提供底層支援。date ti...

(七)boost庫之單例類

一 boost.serialzation的單件實現 單例模式是一種常用的軟體設計模式。在它的核心結構中只包含乙個被稱為單例類的特殊類。通過單例模式可以保證系統中乙個類只有乙個例項而且該例項易於外界訪問,從而方便對例項個數的控制並節約系統資源。如果希望在系統中某個類的物件只能存在乙個,單例模式是最好的...