所以我試圖在 while 回圈中每 10 毫秒運行一次代碼塊,而不停止回圈(休眠)。
我想實作這樣的目標:
while (true) {
if (should_run_the_10ms_code) {
// some code (once every 10 ms)
}
// some other code (every tick)
}
uj5u.com熱心網友回復:
std::chrono::steady_clock::now為您提供單調時鐘的當前時間。這是一個相對簡單的使用方法:
auto timer = std::chrono::steady_clock::now();
while (true) {
auto now = std::chrono::steady_clock::now();
std::chrono::duration<double, std::milli> timer_diff_ms = timer - now;
if (timer_diff_ms >= 10.0) {
// some code (once every 10 ms)
timer = now;
// or
// timer = std::chrono::steady_clock::now();
// if the "some code" takes a bit of time
}
// some other code (every tick)
}
請注意,如果呼叫之間發生了一些冗長的事情(可能在“其他代碼”部分,可能與您的程式完全無關),則可能timer_diff_ms遠大于 10 。now()
如果您不需要 a (它將是某種整數型別) ,您也可以使用std::chrono::millisecondsinstead of 。std::chrono::duration<double, std::milli>double
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/537138.html
標籤:C 循环计时器
