关于多线程使用的问题

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值