我正在使用boost::asio::steady_timer m_timer,如果我沒記錯的話,為了呼叫m_timer.expires_after(expiration_time_ms);,expiration_time_ms應該是一個std::chrono::milleseconds變數。
不過,就我而言,我的到期時間為double. 我想知道是否可以將雙打std::chrono::milliseconds
目的是打電話
void
setExpirationTime(my_casted_double) {
boost::asio::steady_timer m_timer;
m_timer.expires_after(my_casted_double)
}
uj5u.com熱心網友回復:
一個不錯的技巧是將您的值與 chrono 文字相乘:
using namespace std::chrono_literals;
double time = 82.0;
auto t_82ms = time * 1ms;
std::this_thread::sleep_for(t_82ms);
它也可以反過來作業:
double time = t_82ms / 1s; // time == 0.082
uj5u.com熱心網友回復:
m_timer.expires_after將接受任何可轉換為boost::asio::steady_timer::duration不需要的持續時間std::chrono::milliseconds(如果您不想丟棄持續時間中的小數毫秒,則不應轉換為std::chrono::milliseconds)。
您可以將您double的轉換std::chrono::duration為如下:
double milliseconds = 0.1;
std::chrono::duration<double, std::milli> chrono_milliseconds{ milliseconds };
chrono_milliseconds但是不能自動傳遞expires_after,因為沒有從浮點持續時間到整數持續時間的自動轉換。您可以使用以下方法解決此問題std::chrono::duration_cast:
m_timer.expires_after(
std::chrono::duration_cast<boost::asio::steady_timer::duration>(chrono_milliseconds));
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/417705.html
標籤:
下一篇:使用函式列印C 中的基本學生資訊
