郁闷!简单的问题搞不懂!!!!

智商无下限 2003-08-16 08:45:56
线程中定义了这样一个过程
procedure thred2.mainbj;
begin
Form1.mainshow.Lines.Add(temp_bj);//向MEMO中加信息
end;
这样调用的
Synchronize(mainbj);
可是每次执行到的时候CPU的利用率就达到百分之百。速度是在难以让人忍受!应该怎么解决呀???我最多的时候可能是10个线程同时都使用类似的过程。
...全文
92 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lynew 2003-08-18
  • 打赏
  • 举报
回复
你的十个线程如果处理都在Synchronize中,那线程还有意义吗?
如果不在,你可以在线程中建一个Timer.
我做工控的时候数据采集时就建了一个,你可以试一下。
knock 2003-08-17
  • 打赏
  • 举报
回复
多线程并不一定快,试过小程序,每次++,单线程的执行速度比用了Synchronize的多线程快。
智商无下限 2003-08-16
  • 打赏
  • 举报
回复
做的是实时监控的,需要及时的把信息反馈给用户,要求不能时间延续小于1秒!
有没有什么折中的方法呢???
zhoutian618 2003-08-16
  • 打赏
  • 举报
回复
或者是再定义一个线种,对这种要加入的信息进行统一管理,(注意线程的阻塞)
当信息足够的时候再一次加入到Form1.mainshow.lines中,
这样行不行?
zhoutian618 2003-08-16
  • 打赏
  • 举报
回复
可能会比较慢的,
因为Synchronize过程等同于在主线程中执行该代码,如果有十个线程。
应该减少Synchronize方法的调用,你能不能够当满十次要加的时候,
再一次加到Form1.mainshow.lines中呢?

1,184

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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