BCB实现delay功能,如何降低CPU负载?

strong12345 2013-06-13 07:56:45
小弟我想再BCB中实现 delay功能
或是一直等待,直到某变数改变,才反应一些事件
目前使用的方法都是 while 配上 Application->ProcessMessages() 实现

void Delay(int iMilliSeconds)
{
int iStart;

iStart = GetTickCount();
while (GetTickCount() - iStart <= iMilliSeconds)
Application->ProcessMessages();
}

例如像这方法,在while里
CPU负荷会变很大
请问有没有什么方法降低CPU负荷?
...全文
241 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
武稀松 2013-06-16
  • 打赏
  • 举报
回复
void Delay(int iMilliSeconds) { int iStart; iStart = GetTickCount(); while (GetTickCount() - iStart <= iMilliSeconds) { Sleep(1); Application->ProcessMessages(); } }
strong12345 2013-06-16
  • 打赏
  • 举报
回复
这个主意不错,试试看 谢谢
星際訪客 2013-06-16
  • 打赏
  • 举报
回复
使用一個多線程輪詢迴路...迴路裡使用 Sleep 降低 CPU 負載! 這樣一來就不會影響主線程窗口 UI 事件~
strong12345 2013-06-16
  • 打赏
  • 举报
回复
主要目的就是想要降低CPU
strong12345 2013-06-16
  • 打赏
  • 举报
回复
使用Sleep会导致程序整个暂时卡死,因此不考虑用Sleep.... 只是我目前没想出不阻塞主线程的delay方法... 不知道有没有哪位高手有好方法?
lyp371 2013-06-16
  • 打赏
  • 举报
回复
个人觉得你那方法比较好,我平时也是这么干的,这样不会阻塞主线程。如果你的程序必须要等待这个,在等待的时候啥事都不用做那直接用Sleep()
strong12345 2013-06-16
  • 打赏
  • 举报
回复
刚好我早上也发现这样可以减低cpu 分数就给你了~ 谢谢
Format_CIH 2013-06-13
  • 打赏
  • 举报
回复
有个Sleep函数可以用的,和delay一样,Sleep(10)就是延迟10毫秒
缘中人 2013-06-13
  • 打赏
  • 举报
回复
放个timer控件,在这里判断试试

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧