如何制造延迟

时间:2011-03-24 18:14:01

标签: c++ windows

我需要在不使用Sleep()的{​​{1}}的情况下创建延迟计时器,因为它会暂停当前和子线程。所以我需要一个简单的延迟计时器来应用到我的程序中。

谢谢。

4 个答案:

答案 0 :(得分:3)

轮询是一个坏主意,因为它意味着繁忙的循环。在Windows上执行此操作的常规方法是使用计时器。请参阅SetTimer()

答案 1 :(得分:3)

Sleep不会影响任何其他线程。如果在调用Sleep时发现所有线程都已停止,则表示休眠线程有一个他们都在等待的资源。找出那个资源是什么,否则你的程序不可能按计划工作。

答案 2 :(得分:1)

您可以重复循环并重复轮询系统计时器。这导致完全CPU使用,但是 - 使用Sleep(直接或间接)是通常实现延迟的方式。

或者,您可以创建一个事件并使用所需的延迟调用WaitForSingleObject。但这很疯狂,Sleep确实做了同样的事情,但更好。

答案 3 :(得分:0)

你需要使用一些循环并计算秒数,同时你必须保持消息泵送。这将使您的程序响应。

为何延迟?延迟并不是一个好主意。您应该考虑使用同步对象,如mutex,event。