【问题标题】:C++ simple timer/tick functionC++ 简单的计时器/刻度函数
【发布时间】:2014-07-26 22:33:02
【问题描述】:

正如标题所说,我想创建一个简单的计时器/滴答功能,例如 5 分钟,这样我就可以调用另一个功能,然后计时器再次启动,依此类推,但不使用睡眠或时钟功能。那么是否有任何功能或方法可以例如以秒为单位计数?感谢您的帮助。

【问题讨论】:

  • sleep 有什么问题?这是你真正想做的事情,还是编码难题?
  • “不使用睡眠或时钟功能”:如果没有时钟,您将如何测量 5 分钟? std::thread + std::chrono 这里应该够用了。
  • 我试过睡眠,但它完全暂停了程序,这不好也尝试了倒计时 int 但我想要一些“实时”的东西,因为你知道每个系统计数更快或更慢,我还尝试了一些具有时钟功能的东西,它运行良好,但我不知道我觉得它不是很“清晰”的编码它应该适用于 windows
  • 所以你说时钟功能没问题?
  • 如果使用正确,是的:在您的问题中显示您的计时器代码(带有时钟)以获得准确的答案。

标签: c++ timer count


【解决方案1】:

虽然您说要避免“时钟功能”,但我不明白如何在没有时钟的情况下计算 5 分钟。这是一个非常基本但便携的计时器。

结果foo() 方法每 5 分钟调用一次。


#include <thread>
#include <iostream>

void foo()
{
    std::cout << "Hello !\n";   
}

int main()
{
    std::thread([&]
    {
        while(true)
        {
            // Wait 5 minutes
            std::this_thread::sleep_for(std::chrono::minutes(5));
            // Call our method
            foo();
        }
    }).detach();

    // Execution continues ...
    std::cin.get();
}

注意事项:

  • 我将 lambda 传递给线程,但任何可调用对象都可以。
  • std::chrono 有很多很酷的东西来控制日期和时间,你可以很容易地用它来调整你的计时器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-14
    • 1970-01-01
    相关资源
    最近更新 更多