线程是CPU分配时间片的基本单位,对CPU来说,你的主线程和查询线程应该是一视同仁的,我想可能是你的代码有问题,我推测可能是:
一.你的查询过程根本没有放在副线程中,还是在主线程中实现的。
二.你的查询代码确实是在副线程中实现,但是使用了非耗时的循环,这时你可试着在循环中放入一个Sleep(n)之类的语句,把CPU让给你的主线程一会儿。以上是我的个人看法,本人才疏学浅,还望多交流!
一.你的查询过程根本没有放在副线程中,还是在主线程中实现的。
二.你的查询代码确实是在副线程中实现,但是使用了非耗时的循环,这时你可试着在循环中放入一个Sleep(n)之类的语句,把CPU让给你的主线程一会儿。以上是我的个人看法,本人才疏学浅,还望多交流!
我想楼主的问题应该是出在代码的逻辑上,最好把代码贴出来看看。
TThread对象提供了一个Synchronize方法来完成操作的串行化,但它是利用消息机制把操作转移到主线程中去执行的,只适合于操作时间较短(与子线程的总运行时间相比)的情况。如果可能导致数据访问冲突的操作所占的时间较长,不要用这种方法去串行化,而要改用TCriticalSection或TMultiReadExclusiveWriteSynchronizer去解决冲突。