21xrx.com
2024-12-22 20:57:29 Sunday
登录
文章检索 我的文章 写文章
C++定时器:每秒输出一次
2023-07-08 18:28:45 深夜i     --     --
C++ 定时器 输出

在C++编程中,定时器是常用的工具,可以在程序运行过程中调用函数或执行特定的操作。当需要对程序进行时间控制时,定时器是一个非常有用的工具。在本篇文章中,我们将会介绍如何使用C++来创建一个定时器,使得每秒输出一次。

首先,我们需要了解一下时间相关的头文件和函数。C++中有两个时间相关的头文件:ctime和chrono。ctime提供了C语言中的时间函数,例如time和localtime。chrono则提供了C++11中的时间函数,例如system_clock和duration。

我们可以使用chrono中的steady_clock来创建一个计时器,这是一个每秒钟加一的计时器。下面是一个简单的定时器的代码示例,它会每秒输出一次。


#include <iostream>

#include <chrono>

#include <thread>

int main()

{

  using namespace std::chrono_literals;

  auto start = std::chrono::steady_clock::now();

  

  while (true)

  {

    auto end = std::chrono::steady_clock::now();

    auto diff = end - start;

    if (diff >= 1s)

    {

      std::cout << "One second passed." << std::endl;

      start = std::chrono::steady_clock::now();

    }

    std::this_thread::sleep_for(50ms);

  }

  return 0;

}

代码中的第一个使用了using namespace std::chrono_literals;,它将1s转换为std::chrono::seconds类型。这使得程序中的时间语句更清晰。

接下来,我们创建了一个名为start的std::chrono::time_point类型的变量,并使用std::chrono::steady_clock::now()函数来获取当前时间。在程序的运行过程中,我们将使用这个变量来记录时间。

接着,我们进入了一个无限循环,这个循环可以一直运行到程序结束。在循环中,我们获取了当前时间,并计算了与start之间的时间差。如果时间差大于等于1秒,则输出“One second passed.”,并更新start变量为当前时间。这样我们可以在每秒钟输出一次。

最后,我们使用std::this_thread::sleep_for函数来让程序暂停50毫秒。这是为了减少程序的CPU占用率,因为无休止地运行会导致CPU的过度使用。

总之,使用C++创建定时器是一个非常有用的工具,它可以帮助程序员在代码中添加时间控制。在本文中,我们介绍了如何使用chrono头文件来创建一个定时器,让它每秒钟输出一次。希望本文能够对读者有所帮助。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复