求助:时间等待函数

cqwangsf   2008-8-28 17:12 楼主
我在evc下编程,想在do{}while()函数中用一个时间函数等待一段时间,但在此函数执行期间又不影响别的线程的执行。
所以sleep函数看来是不行了,不知道那位高手知道这种函数?还请帮忙指点一下。谢谢!

回复评论 (10)

是想忙等待吗?
点赞  2008-8-28 17:24
对,忙等待
点赞  2008-8-28 17:32
last = GetTickCount()
while(GetTickCount() - last < duration);
点赞  2008-8-28 17:35
引用: 引用 3 楼 hhyh612 的回复:
last = GetTickCount()
while(GetTickCount() - last < duration);

最简单的办法就是楼上的这种
点赞  2008-8-28 19:13
提示: 作者被禁止或删除 内容自动屏蔽
点赞  2008-8-28 23:03
先定义一个函数

BOOL PeekAndPump()
{
        static MSG msg;

        while (::PeekMessage(&msg,NULL,0,0,PM_NOREMOVE)) {
                if (!AfxGetApp()->PumpMessage()) {
                        ::PostQuitMessage(0);
                        return FALSE;
                }       
        }

        return TRUE;
}

然后,你的do{}while()可以写成
do
{
   ...
   Sleep( time );
   PeekAndPump();
}while();
点赞  2008-8-29 09:53
引用: 引用 5 楼 billy14 的回复:
不影响别的线程的执行?
应该用WaitForSingleObject( ,time);这个才不会影响别的线程的运行吧!

你说的没错,不过楼主需要“对,忙等待”,呵呵。
点赞  2008-8-29 10:16
感觉WaitForSingleObject( ,time)比较好。

last = GetTickCount()
while(GetTickCount() - last < duration);
要占用一定的CPU处理时间,在移动设备上硬件资源本来就有限。
点赞  2008-8-29 10:17
楼主说了要忙等待。。
点赞  2008-8-29 10:25
赶紧结贴给分吧!!!
点赞  2008-9-1 12:35
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复