前言
在许多编程场景中,定时器是一种非常有用的工具。无论是需要定期执行任务,还是希望在特定的时间点触发事件,一个精确且可靠的定时器都能派上用场。虽然C++标准库并未直接提供定时器功能,但通过C++的线程和时间管理工具,我们可以构建出自己的定时器类。本文将介绍如何利用C++的
<chrono>
和<thread>
库创建一个简单的定时器,并演示其用法。
一、定时器
1、实现原理
自定义的定时器将基于以下几个C++特性:
- 线程: 使用
std::thread
来创建一个可以在后台运行的线程,用于执行定时任务。 - 时间间隔: 使用
std::chrono::milliseconds
或类似的时间间隔类型来指定定时器的触发间隔。 - 等待: 使用
std::this_thread::sleep_for
让线程在指定的时间间隔内休眠。 - 原子操作: 使用
std::atomic<bool>
来安全地控制线程的运行和停止状态。 - 函数对象: 使用
std::function
来允许用户传递任意可调用对象作为定时任务。
2、实现定时器类
首先,定义一个名为
Timer
的类,它将包含我们所需的所有功能。
#include <chrono>
#include <functional>
#include <thread>
#include <atomic>
class Timer {
public:
Timer()