确定自开始以来是否已经过了'x`小时

时间:2017-10-18 01:20:26

标签: c++

我正在为一些监控目的设计一个类。所以,我希望它在每{{}}}小时之后显示一条消息(类似于x)。

我想知道如何最好地在C ++中实现这一目标?我可以找出当前时间:

x=4

但如何确认 std::time_t result = std::time(nullptr); auto local = std::asctime(std::localtime(&result)); 小时是否已过去?我应该在程序开头找到当前时间,例如x,然后让程序每秒检查当前时间(从纪元开始)(例如,通过调用函数ct)和只有在checkCurrentTime()和当前时间之间的差异等于ct时,才会触发一些操作?

1 个答案:

答案 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。