我有一個自定義計時器模板,我想在std::this_thread::sleep_until()
中使用。所以我now()
方法是這樣的:如何讓定製(計時器)計時器與sleep_until一起工作?
static time_point now() {
return time_point(timer_T::now() - epoch_);
}
其中epoch_與timer_T::now()
初始化。現在我想能夠sleep_until特定的時間點。
std::this_thread::sleep_until(my_timer<>::now() + std::chrono::seconds(1));
我想我的問題是,我必須作出time_point
與my_timer <>爲(模板)Clock的說法,但現在則有不同的time_points之間的轉換。例如:
using time_point = std::chrono::time_point<my_timer<timer_T>>;
代碼可以找到here。
我該如何讓這個工作?另外,是否有一個小巧的chrono howto,在那裏我可以找到一些信息如何創建一個自定義計時器?
您正在改變time_point的含義,它必須存儲自定義時代以來的持續時間。如果你沒有遵循規則,依賴於該規則的API無法工作。通過隱式轉換爲實時time_point創建自己完全不同的時間點類。 – galop1n
是真的,但是紀元沒有在標準中定義,所以我認爲創建一個自己的時鐘應該是這樣的,因爲time_point是基於你給出的作爲模板參數的時鐘。 – user1810087
是的,創建自己的時鐘是可以的,它可以使用任何它需要的時代。 「時代」並不意味着「1970年的第一天的午夜」;這就是「UNIX時代」的意義所在。 「時代」的意思很簡單,就是「參考日期」。 –