gpt4 book ai didi

C++ duration_cast<>(time_point_end - tine_point_start)。 count() 溢出

转载 作者:行者123 更新时间:2023-12-02 10:37:16 24 4
gpt4 key购买 nike

我想做的,我的项目:

我想做一个等待0.5秒的程序,例如,做一些事情,比如说cout << "Hello World" ,一次又一次相同的大约 10 次(这是对另一个程序的测试),但没有 sleep , sleep , sleep 或任何类似的 BCS 我不希望处理器实际 sleep ,当时 BCS 处理器确实不只是等待,它在那段时间什么也不做,在这 0.5 秒内它什么也不做,我不希望这样,主要原因是 BCS 它也不接受输入。

我试过的:

我尝试的是在 for 循环((int i = 0;i < 10;i++))中保持两个时间点(time_point start,end),duration_cast 它们的差异(end - start),如果它们的差异是 500毫秒,然后,cout << "Hello World\n";。
我的代码看起来像这样:

#include <iostream>
#include <chrono>
#include <ctime>
using namespace std;
using namespace chrono;

int main()
{
time_point<steady_clock> t = steady_clock::now():
for (int i = 0; i < 10;)
{
duration<double> d = steady_clock::now() - t;
uint32_t a = duration_cast<milliseconds>(d).count();
if (a >= 500)
{
cout << a << " Hello World!" << endl;
t = steady_clock::now();
i++;
}
}
return 0;
}

我的问题:

它溢出,大多数时候,我不知道究竟是什么溢出,但 a 有时似乎是 6?其他 47??? (?=某个数字)
我尝试了很多东西,我最终得到了这样的结果:
#include <iostream>
#include <chrono>
#include <ctime>
using namespace std;
using namespace chrono;

int main()
{
time_point<high_resolution_clock> t = high_resolution_clock::now();
for (int i = 0; i< 10;)
{
duration<double,ratio<1,1000000>> d = high_resolution_clock::now() - t;
uint32_t a = duration_cast<microseconds>(d).count();
if (d >= microseconds(500000) )
{
cout << a << " Hello World!" << endl;
i++;
t = high_resolution_clock::now();
}
}
return 0;
}

它并没有真正解决问题,但出现的最大值是`~1500(1500000 以微秒为单位),当它发生时打印消息需要更长的时间,老实说,我不知道它是否仍然溢出,但是...

问题

无论如何,您对如何停止溢出或完全不同的方式来实现我想要的有任何建议,即使您没有,感谢您花时间阅读我的问题,如果有人的话,我希望表达别人的问题谁和我有同样的问题。

最佳答案

不确定这是否是您要查找的内容。但如果没有,也许我们可以在此基础上确定您想要什么:

#include <chrono>
#include <iostream>

int
main()
{
using namespace std;
using namespace std::chrono;

auto t = steady_clock::now();
for (int i = 0; i < 10; ++i)
{
auto t1 = t + 500ms;
while (steady_clock::now() < t1)
;
cout << duration<double>(t1-t).count() << " Hello World!" << endl;
t = t1;
}
}

代码设置了 time_point future 500 毫秒,然后进入一个繁忙的循环,直到那个 future time_point就是现在。

关于C++ duration_cast<>(time_point_end - tine_point_start)。 count() 溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59687113/

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