用ADOQuery怎样实现线程安全?(Delphi6)(100分)

  • 主题发起人 dolphinji
  • 开始时间
D

dolphinji

Unregistered / Unconfirmed
GUEST, unregistred user!
用ADOQuery怎样实现线程安全?(Delphi6)
ADO的VCL能在线程中使用吗?
 
我也在想这方面的问题
 
不安全的,两个线程同时访问一个adoquery必然会出问题,例如同时调用adoquery进行查询。
要进行安全的访问,可以使用TCriticalSection,或者线程TThread的Synchronize方法。
 
关注!(我的疑问和这个类似)
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1417440
如果使用多线程的话,应该在每个线程中建立一个ADOQuery进行查询,但和数据库连接的地
方我还不太确定,如果每个ADOQuery都建立一个单独的连接用于访问数据库,将有两个缺点,
1、连接速度慢(因为个在线程中建立的ADOQuery都要连接一次数据库,效率将很低);
2、数据库服务器负荷太大。
如果所有线程中的ADOQuery都共用一个ADOConnection的话,是不是自己什么都不用做它就
能工作得很好?我是我不能确定的地方。
在多个线程中共用一个ADOQuery看来也不太可取,为了完全的存取数据我们必须使用各种线程
同步的手段,但由于数据库访问主要是I/O操作,通过线程同步后就变成串行化处理,每个
线程的处理都是要排队的,算起来比单线程也快不了。
 
多人接受答案了。
 
顶部