为什么我的程序一运行,CPU就使用100%?

favorit 2002-10-24 07:30:13
在程序里用了一个线程,结果这个线程导致CPU的百分之百使用,简直是一个病毒呀!:(
不知是什么地方不对,肯定代码有问题,请各位大虾指教一二了!
...全文
228 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
bcb_fans 2002-10-25
  • 打赏
  • 举报
回复
怪了,SDK不是有定义吗?

typedef struct _OVERLAPPED { // o
DWORD Internal;
DWORD InternalHigh;
DWORD Offset;
DWORD OffsetHigh;
HANDLE hEvent;
} OVERLAPPED;
favorit 2002-10-25
  • 打赏
  • 举报
回复
BCB_FANS说:
使用异方式
ReadData()
{
.........

ReadFile(........Overlap,...)
GetOverlappedResul(....);这里将一直等到读数据
.....
}
不过那个Overlap的结构到底是什么?需要自己对它定义吗?
cdws222 2002-10-25
  • 打赏
  • 举报
回复
你加一个Application->ProcessMessages();可能就没事了
favorit 2002-10-25
  • 打赏
  • 举报
回复
我是指用的时候是不是直接引用Overlap就可以了?:)
bcb_fans 2002-10-24
  • 打赏
  • 举报
回复
Faint!!!

谁说我写错了???

那是四大名捕之追杀令之第1招,叫做“网络生存之踏网无痕”,保证让大多数E-Mail搜索机完全失效!?!?!不用再害怕受到垃圾邮件地骚妖了:)
favorit 2002-10-24
  • 打赏
  • 举报
回复
To: BCB_FANS(四大名捕之追杀令)
不要被cker老大挂念,就那么激动呀!激动地连mail地址都写错了:)
我已经发了!不过估计你看后会faint掉的
bcb_fans 2002-10-24
  • 打赏
  • 举报
回复
To : cker

多谢老大挂念,小弟深感荣幸!!!:)

现在是 favorit(因你飞扬) 在追杀我,而不是我在追杀他!^_^。

我的E-Mail:slwqw#163.com 。
favorit 2002-10-24
  • 打赏
  • 举报
回复
BCB_FANS:不知道你的mail地址:(
favorit 2002-10-24
  • 打赏
  • 举报
回复
受宠若惊!出现了这么多老大!!
  • 打赏
  • 举报
回复
嗬嗬,有 四大名捕追杀你。我就不出现了.....:)
BCB_FANS 多日不见,近日可好?
bcb_fans 2002-10-24
  • 打赏
  • 举报
回复
好吧,发过来!
NowCan 2002-10-24
  • 打赏
  • 举报
回复
这肯定是100%
如果不是什么紧急任务,改成下面的就可以。
while(! Terminated )
{
//如果数据不是一直都有,通常采用事件触发的方式,比如网络编程常用的OnRead、OnWrite等。而不是一直不停的自己去检测,这样效率是最低的!
::Sleep(1);
Synchronize(ReadData);
}
favorit 2002-10-24
  • 打赏
  • 举报
回复
ReadData()实在太长,而且有些地方看了好像意义不大,我给你mail过去吧
bcb_fans 2002-10-24
  • 打赏
  • 举报
回复
从代码来看,这个线程在不停的循环读取数据,肯定占用时间了,不知道那个ReadData怎么回事?

while(! Terminated )
{
//如果数据不是一直都有,通常采用事件触发的方式,比如网络编程常用的OnRead、OnWrite等。而不是一直不停的自己去检测,这样效率是最低的!

Synchronize(ReadData);
}
favorit 2002-10-24
  • 打赏
  • 举报
回复
To:BCB_FANS(四大名捕之追杀令)
老兄,贴出来了我认为有问题的那一部分,我不知道你要看哪部分,干脆我mail过去算了,呵呵
favorit 2002-10-24
  • 打赏
  • 举报
回复
不会吧?我的执行:
void __fastcall TReadThread::Execute()
{
while (! Terminated ) Synchronize(ReadData);
}
void __fastcall TReadThread::ReadData()是一个读取线程的执行动作。
是不是因为这个线程一直在执行?怎样让线程不读取数据时,把CPU还给系统?
本来以前有一个这个贴子的,结果现在打不开了:(
bcb_fans 2002-10-24
  • 打赏
  • 举报
回复
你自己都“肯定代码有问题”了,却又不把代码贴出来,你让人家怎么帮你吗?:)
westfly 2002-10-24
  • 打赏
  • 举报
回复
死循环了吧?
favorit 2002-10-24
  • 打赏
  • 举报
回复
Faint!
2002年10月24日20:23,论坛在线名单(671人)
怪不得我的问题没有人回答:(

13,873

社区成员

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

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