gpt4 book ai didi

C++ 如何每 10 秒检查一次时间?

转载 作者:太空狗 更新时间:2023-10-29 23:33:22 24 4
gpt4 key购买 nike

我正在写一个检查点。每次运行循环时我都会检查。我认为这会浪费大量的 CPU 时间。我想知道如何每 10 秒检查一次系统时间?

time_t start = clock();
while(forever)
{
if(difftime(clock(),start)/CLOCKS_PER_SEC >=timeLimit)
{
break;
}
}

最佳答案

简短的回答是,如果您是新手程序员,这非常困难

现在有一些可能性:

  • 睡十秒钟。这意味着您的程序基本上毫无意义。

  • 使用alarm() 和信号处理程序。这很难做到正确,因为您不能在信号处理程序中做任何花哨的事情。

  • 使用 timerfd 并将时序逻辑集成到您的 I/O 循环中。

  • 为计时器设置一个专用线程(然后可以休眠);这非常困难,因为您需要考虑同步所有共享数据访问。

这里要强调的是,您的问题没有简单的解决方案。您需要将时序逻辑深入集成到您现有的程序流程中。此流程应该是某种“主循环”(例如,像 epoll_waitselect 这样的 I/O 多路复用循环),可能是多线程的,并且该循环应该启动计时器已触发的事实。

没那么容易。


这是一个切线,可能具有指导意义。基本上有两种计算机程序(除了所有其他类型):

一种是尽可能高效地执行一项特定任务然后完成的程序。例如,这类似于“生成 SSL key 对”或“查找文件中匹配 X 的所有行”。就程序流程而言,这些程序易于编写和理解。

另一种是与用户交互的程序。这些程序无限期地保持运行并响应用户输入。 (基本上是任何类型的 UI 或游戏,但也包括 Web 服务器。)从控制流的角度来看,这些程序将绝大部分时间用于...无所事事。他们只是闲着等待用户输入。所以当你考虑如何对此进行编程时,你如何让程序什么也不做?这是“主循环”的核心:它是一个循环,告诉操作系统让进程保持 sleep 状态直到发生一些有趣的事情,然后处理有趣的事件,然后再回到 sleep 状态。 p>

直到您了解如何什么都不做,您才能设计出第二种程序。

关于C++ 如何每 10 秒检查一次时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16142552/

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