我想写一个程序来模拟一个自助餐厅,顾客每隔10~50秒进入一个自助餐厅。所以我希望每隔10~50秒调用一个函数来显示要调用的函数中的菜单卡
答案 0 :(得分:3)
在主循环中,获取时间并将其与上次调用函数进行比较(在声明函数时初始化为“now”)。如果它大于你的间隔,那么调用你的函数并将“last-time-called”变量设置为当前时间。
答案 1 :(得分:3)
Boost库在Boost.Asio中提供了此功能,并在其教程中明确涵盖了这一点:
Synchronous timer,即等到计时器到期。
Asynchronous timer,即继续您的程序并在计时器到期时调用回调函数。
如果你在网上搜索C ++时没有找到Boost库,你的google-fu就会很弱。 ; - )
答案 2 :(得分:1)
有两种方法:1.Asynchronous 2. Synchronous
假设您使用的是Win32,C ++。您可以使用Win32 API SetTimer
UINT_PTR timerid = SetTimer(NULL,0,毫秒,&回调);
如果你想要一个轮询方法你最好使用类似的东西
for(;;)
{
Say_Hello();
// Sleep for 50*1000ms
Sleep(50000);
}
答案 3 :(得分:0)
对于更多跨平台的计时器并使用c ++ STL,请查看C++ Cross-Platform High-Resolution Timer。
从那里开始,只需使用上面提到的两个跨平台计时器,每隔10~50秒在一个循环中创建和调用一个函数。