gpt4 book ai didi

c++ - 你如何在 C++ 中的特定时间每天调用一次函数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:01:20 25 4
gpt4 key购买 nike

好吧,如果我的应用程序正在运行,我需要弄清楚如何在特定时间调用函数。

它可能会在一个 while 循环中检查时间,但我不希望它每分钟检查一次时间,但我不希望它错过确切的时间,比如 18:00。

有什么办法吗?

最佳答案

如果您想从已经运行的程序中调用特定函数,请使用 Boost 的 Date Time图书馆和Asio .

#include <boost/date_time/gregorian/gregorian_types.hpp>
#include <boost/date_time/posix_time/posix_time_types.hpp>
#include <boost/asio.hpp>

namespace gregorian = boost::gregorian;
namespace posix_time = boost::posix_time;
namespace asio = boost::asio;

asio::io_service io_service_;
asio::deadline_timer timer_ (io_service_);

然后设置时间。这是一个使用所需时间字符串的示例,例如“18:00:00”。 (请注意,Boost 的时间戳默认为 UTC!)

gregorian::date today = gregorian::day_clock::local_day();
posix_time::time_duration usertime = posix_time::duration_from_string(time)
posix_time::ptime expirationtime (today, usertime);

现在设置定时器调用foo():

timer_.expires_at (expirationtime);
timer_.async_wait (foo); // use Boost::bind() if you want a member function

您可以使用以上两个代码片段向 timer_ 添加任意数量的计时器。当一切准备就绪时:

io_service_.run ();

请注意,这将接管当前线程。因此,如果您希望程序的其余部分继续运行,则必须从不同的线程调用 run()。 (显然,为此使用 Boost 的 Thread 库。)

关于c++ - 你如何在 C++ 中的特定时间每天调用一次函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4442597/

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