代码之家  ›  专栏  ›  技术社区  ›  Grehgous

C++:比较当前时间和下一个工作时间

  •  2
  • Grehgous  · 技术社区  · 7 年前

    我正在做一个自动化程序。其思想是,在执行一个动作后,它会增加下一个动作应该执行的时间。我选择了这个方法而不是简单的 Sleep() 语句,因为我正在等待用户键盘输入,它可以执行各种操作。

    我遇到的问题是 std::chrono::steady_clock::now() > next_work_period 似乎总是评估为真,因此没有等待期。

    这是我第一次使用这些函数。非常感谢您的帮助!

    auto next_work_period = std::chrono::steady_clock::now();
    
        while (1) {
    
            // To keep disk usage low, 100 may need to be changed
            Sleep(100);
    
            // If current time is time to do next action
            if (std::chrono::steady_clock::now() > next_work_period) {
    
                std::cout << "Has been 20 seconds" << endl;
    
                // Calculate next click time, 20 seconds from now
                next_work_period += std::chrono::milliseconds((20) * 1000);
            }
        }
    
    1 回复  |  直到 7 年前
        1
  •  4
  •   Galik    7 年前

    睡觉怎么样 直到 下一个工作周期?这样地:

    auto next_work_period = std::chrono::steady_clock::now();
    
    while (1) {
    
        std::this_thread::sleep_until(next_work_period);
    
        doTheThing();
    
        // Calculate next click time, 20 seconds from now
        next_work_period += std::chrono::seconds(20);
    }