我正在为一些监控目的设计一个类。所以,我希望它在每{{}}}小时之后显示一条消息(类似于x
)。
我想知道如何最好地在C ++中实现这一目标?我可以找出当前时间:
x=4
但如何确认 std::time_t result = std::time(nullptr);
auto local = std::asctime(std::localtime(&result));
小时是否已过去?我应该在程序开头找到当前时间,例如x
,然后让程序每秒检查当前时间(从纪元开始)(例如,通过调用函数ct
)和只有在checkCurrentTime()
和当前时间之间的差异等于ct
时,才会触发一些操作?
答案 0 :(得分:0)
是的,在几小时内使用time since epoch可行。连续更新当前时间,直到自上次警报起x小时,打印警报,更新警报时间并重复,直到完成监控。对于此示例,您需要#include <chrono>
x=4;
current = last_alert = std::chrono::duration_cast<std::chrono::hours>(std::chrono::system_clock::now().time_since_epoch()).count();
while (!finished){
while ((current-last_allert)<x){
sleep(1);
current = std::chrono::duration_cast<std::chrono::hours>(std::chrono::system_clock::now().time_since_epoch()).count();
}
printf("alert!");
last_alert = std::chrono::duration_cast<std::chrono::hours>(std::chrono::system_clock::now().time_since_epoch()).count();
}
sleep(1)
仍会占用相当数量的cpu,因为警报每4小时或许每30秒检查一次而不是1。