gpt4 book ai didi

C++如何检查两个毫秒值的差异是否为正?

转载 作者:太空宇宙 更新时间:2023-11-04 15:18:43 25 4
gpt4 key购买 nike

我需要引入至少 2 秒的延迟。为此,我这样做了:

typedef std::chrono::high_resolution_clock Clock;
typedef std::chrono::milliseconds Milliseconds;
Clock::time_point t0 = Clock::now();

// DO A LOTS OF THINGS HERE.....

Clock::time_point t1 = Clock::now();
Milliseconds delayTime = Milliseconds(2000) -
std::chrono::duration_cast<Milliseconds>(t1 - t0);

// Check if time left from initial 2 seconds wait the difference
if (delayTime > Milliseconds(0))
{
std::this_thread::sleep_for(delayTime);
}

如果还有时间,我检查正确了吗?

最佳答案

除非你真的需要确保在 2 秒已经过去时根本不调用 sleep ,否则计算 sleep 何时结束似乎要容易得多,然后调用 sleep_until,传递那个时间。

auto t1 = Clock::now() + 2s; // beware: requires C++14

// do lots of things here

std::this_thread::sleep_until(t1);

如果 2 秒已经过去,sleep_until(至少可能)立即返回。如果还没有过去,线程会休眠到指定的时间。

关于C++如何检查两个毫秒值的差异是否为正?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24665143/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com