2013-03-28 54 views
-2

我想编写一个程序来模拟客户每隔10〜50秒进入一次cafetaria的cafetaria。所以我想每10到50秒调用一次函数如何每x秒调用一次函数

+1

你需要在10-50秒内发生其他事情,还是只是等待进入食堂的人? – chris

+0

我是初学者在C++和我在网上搜索,但我没有找到任何东西 – user2219913

+0

我有一个方法,我想打电话每隔50次秒 – user2219913

回答

1

有两种方法:1.Asynchronous 2.同步

  1. 假设你使用Win32,C++。您可以使用Win32 API SetTimer

    UINT_PTR timerid = SetTimer(NULL,0,milliseconds,& callback);

  2. 如果您想轮询方法你会更好地利用类似的东西

    for(;;) 
        { 
    
        Say_Hello(); 
        // Sleep for 50*1000ms 
        Sleep(50000); 
    
        } 
    
+1

你也可以在标准的C++中创建自己的。你不必使用winapi。 – chris

+0

@ us2012它取决于是睡在毫秒还是几秒钟...这就是为什么我评论为50 * 1000毫秒...或者你可以写入睡眠(50000)... –

+0

是的。我的问题是为什么你把它写成'for'循环而不是'sleep(50000)'。对于这个数量级的时间,这可能并不重要,但对于较小的时间,结果可能会有所不同,具体取决于您是在一个街区“睡眠”还是分成多个街区。 – us2012

3

在你的主循环中,获取时间并将其与上一次调用函数(在声明它时初始化为“now”)进行比较。如果它大于你的时间间隔,那么调用你的函数,并设置“最后一次调用”变量到当前时间。

3

Boost库提供了这Boost.Asio,并明确包括这在其教程:

如果您在网络中搜索C++时未找到Boost库,那么您的谷歌搜索功能很弱。 ;-)

+0

只是好奇,还不够格将这项工作,如果我把它放在一个游戏循环'异步timer'像每调用某个函数的声明? 5秒 – majidarif

+0

@majidarif:。而不必使用Boost.Asio的自己,而不必看了看文档,我将回答一个不合格的“是”在固定的时间间隔调用函数是什么这样的库是 – DevSolar

+0

哦好吧,我担心它可能会在每次在循环中调用计时器时调度计时器,而不是每5秒钟调用一次,而是在5秒后每循环调用一次。 – majidarif

0

对于更多跨平台的定时器和利用C++ STL,请看C++ Cross-Platform High-Resolution Timer

从那里,使用上面提到的那些跨平台定时器中的两个,每隔10到50秒简单地创建并调用一个循环中的函数。