📅  最后修改于: 2023-12-03 14:59:49.265000             🧑  作者: Mango
在 C++ 编程中,有时需要让特定的代码块每隔一定时间就被执行,本文将介绍如何让 C++ 代码实现每 1 分钟执行一次的功能。
一种比较简单的实现方式是使用 sleep
函数,该函数可以让程序在指定的时间内暂停执行。我们可以在某个循环中调用 sleep
函数来实现每隔 1 分钟执行一次的效果,示例代码如下:
#include <ctime>
#include <unistd.h>
int main() {
while (true) {
// 执行需要定时执行的代码
// ...
// 等待 60 秒
sleep(60);
}
return 0;
}
上述代码中,我们使用了标准库中的 ctime
头文件和操作系统的 unistd.h
头文件,ctime
中包含了时间相关的函数,unistd.h
中包含了 sleep
函数。
注意,使用 sleep
函数会将整个程序暂停执行,可能会对程序的性能造成影响,如果需要在执行代码的同时也能执行其他操作,可以考虑使用下面介绍的方式。
另一种实现方式是使用定时器,定时器可以在指定时间时触发特定的事件,从而让程序在这个事件被触发时执行需要执行的代码。
在 C++ 中,可以使用系统提供的定时器或者某些第三方库来实现定时器功能,下面是一个基于 boost
库实现的每隔 1 分钟执行一次的示例代码:
#include <boost/asio.hpp>
void timer_callback(const boost::system::error_code& ec) {
// 执行需要定时执行的代码
// ...
if (!ec) {
// 再次启动定时器
timer.expires_at(timer.expires_at() + boost::posix_time::seconds(60));
timer.async_wait(timer_callback);
}
}
int main() {
boost::asio::io_service io;
boost::asio::deadline_timer timer(io);
timer.expires_from_now(boost::posix_time::seconds(60));
timer.async_wait(timer_callback);
io.run();
return 0;
}
上述代码中,我们使用了 boost
库提供的 boost::asio::deadline_timer
类来实现定时器的功能,在 main
函数中创建了一个 io_service
对象和一个 deadline_timer
对象,将定时器的超时时间设置为 60 秒,并在 io.run
函数中启动定时器。在 timer_callback
函数中,我们执行了需要定时执行的代码,并在函数的最后再次启动定时器,从而实现了每隔 1 分钟执行一次的效果。
本文介绍了两种实现方式来让 C++ 代码每隔 1 分钟执行一次,分别是使用 sleep
函数和使用定时器。使用 sleep
函数比较简单直接,但会暂停整个程序的执行;使用定时器需要引入第三方库或操作系统提供的定时器,但可以在执行代码的同时执行其他操作。根据实际需求选择合适的实现方式。