ADO与多线程(50分)

  • 主题发起人 jiangyiquan
  • 开始时间
J

jiangyiquan

Unregistered / Unconfirmed
GUEST, unregistred user!
请问各位高手:
用ADO控件在多线程中操作,是否
每一线程都要一TADOConnection?
 
yes.
一个adoconnection不能并行处理query请求
 
一个TADOConnection足够了!
只是Thread中的所有对控件的操作要用 Synchronize 同步一下!
 
只有2人回答,且一正一负,如何选择?
 
Oopsware对
 
cocochuong对
但是,有一个问题,请问,你在线程里能创建ADO连接吗,如果能,是如何键的,请教。
 
请继续或结束。
 
OopsWare对
线程里能创建ADO连接,没问题。代我查查看如何连的。
 
》》提前
 
每一线程都要一TADOConnection,速度快;也合理,因为充分利用了DBMS的并行性。
但在socket 中有问题。
 
李小双:你说的socket中有问题是什么意思.
 
serversocket的stThreadBl工作方式
线程中使用TADOConnection 我建议使用数据模块,auto命名session
 
请继续或结束
 
用两个吧!
 
我写的转文件系统就用一个TADOConnect连接204个TADOQuery。所以不知道就不要乱说。
 
那就把你的东西贴上来让大家学习学习。大家来这里都是讨论,不需要用这样的语气嘛,学习至上。
 
adoconnection不能并行处理query请求
用一个TADOConnect连接204个TADOQuery速度很慢的。
自定义的线程中包含一个数据模块(ADOConnection,ADOQuery...)
 
用一个adoconnection足够了!
 
多个TADOQuery同时连接同一个TADOConnection是有问题的。
但是如果你这样做,不会马上得出冲突错误,因为这个错误是偶发性的。
原因如下:
TADOQuery在和sql server建立连接时,才会需要调用TADOConnection,
而TADOConnection所做的,仅仅是在connection缓冲池中为TADOQuery分配
一个可用的connection,这个操作是很短时间就可以完成的了,之后
TADOConnection就可以为其他TADOQuery服务了。
也就是说TADOConnection的临界区是很短的一瞬间,只有多个TADOQuery同时
访问这一临界区,才会有冲突。
比如:query1使用ADOConnection读取一个很大的表,需要几分钟时间,在这期间
query2无论如何使用ADOConnection,都不会发生冲突。
总之要明白一点,无论多个ADOQuery是连接一个TADOConnection,还是连接多个
TADOConnection,在后台的ado的connection缓冲池中,都是每个ADOQuery对应
一个connection的。
 
我使用到目前尚未出现过问题。
 
顶部