C++ 简单的计时器/刻度函数
Posted
技术标签:
【中文标题】C++ 简单的计时器/刻度函数【英文标题】:C++ simple timer/tick function 【发布时间】:2014-07-26 22:33:02 【问题描述】:正如标题所说,我想创建一个简单的计时器/滴答功能,例如 5 分钟,这样我就可以调用另一个功能,然后计时器再次启动,依此类推,但不使用睡眠或时钟功能。那么是否有任何功能或方法可以例如以秒为单位计数?感谢您的帮助。
【问题讨论】:
sleep
有什么问题?这是你真正想做的事情,还是编码难题?
“不使用睡眠或时钟功能”:如果没有时钟,您将如何测量 5 分钟? std::thread
+ std::chrono
这里应该够用了。
我试过睡眠,但它完全暂停了程序,这不好也尝试了倒计时 int 但我想要一些“实时”的东西,因为你知道每个系统计数更快或更慢,我还尝试了一些具有时钟功能的东西,它运行良好,但我不知道我觉得它不是很“清晰”的编码它应该适用于 windows
所以你说时钟功能没问题?
如果使用正确,是的:在您的问题中显示您的计时器代码(带有时钟)以获得准确的答案。
【参考方案1】:
虽然您说要避免“时钟功能”,但我不明白如何在没有时钟的情况下计算 5 分钟。这是一个非常基本但便携的计时器。
std::thread
用于创建线程
std::chrono
用作时钟
结果: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
有很多很酷的东西来控制日期和时间,你可以很容易地用它来调整你的计时器。
【讨论】:
以上是关于C++ 简单的计时器/刻度函数的主要内容,如果未能解决你的问题,请参考以下文章