关于多线程使用的问题

来源:互联网 发布:flex布局 仿软件 编辑:程序博客网 时间:2024/06/02 09:35

我有一个TThread类,然后类里面,私有成员指针TIdIcmpClient* ,在构造函数中,new了一个TIdIcmpClient对象出来。因为有十来个线程并发,然后发现,从TIdIcmpClient->ReplyStatus读出的信息,是其它线程的内容。感觉很奇怪,不知道TIdIcmpClient这个控件是不是多线程不安全的。如果不是,请问谁有过多线程使用TIdIcmpClient的经验,谢谢啊

VCL本身不内置多线程支持的。因此一般要使用TThread->Synchronize来处理。

大家好,我在编程时,由于处理工作量较大,所以采用多线程编程,用到vcl对象,故采用Synchronize来进行同步,可采用Synchronize方法后,线程的执行效率明显下降,这是怎么回事?该如何处理啊?

不要把大循环的代码放入 Synchronize 调用的过程,
应该只把那些需要修改VCL的代码出去出来过程一个过程,通过 Synchronize 方式调用
用Synchronize方法的执行 实际上是由主线程完成的,当然效率不高。
把某些界面的操作分离出来放到Synchronize里执行,其他的就不用管,我这样搞后cpu占用率就降到零了,真妙.

原创粉丝点击