ADO是否支持多线程?

billik 2003-04-01 11:34:43
在用C++开发SQL Server中,一个ADO对象是否可以同时被多个线程引用?
如果可以,最大量是多少?
...全文
25 点赞 收藏 14
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
周围走 2003-04-22
1。程序启动,建立一个ADO的connection
2。创建线程池,如果有数据要处理,则引用上面的connection
3。程序退出,close connection
当然可以!
你的问题不是多线程问题,是一个连接对象被多个ADO对象引用.
回复
billik 2003-04-22
up
回复
billik 2003-04-22
大家都知道建立一个connection是需要花费很多时间时间的,尤其是在频繁的小数据量处理中。

我的程序设计思路是这样的:
1。程序启动,建立一个ADO的connection
2。创建线程池,如果有数据要处理,则引用上面的connection
3。程序退出,close connection

这样不行吗?
回复
w_rose 2003-04-20
你的程序很可能一会能运行,一会又会报告“已经被使用,必须close”之类的错误。
回复
w_rose 2003-04-20
好久没接触过ADO了!

做是可以这样做,但是这个对象应该不是“线程安全的”,也就是你这样做的程序可能经常出(运行时)故障,即使不出故障得到的运行结果也可能“莫名其妙”会乱。

独立声明connection并且各自打开各自的连接不好吗?
回复
billik 2003-04-19
可能我没有表达清楚

我的意思是先创建ADO的Connection(因为Connection是很占用时间的),然后在应用程序中,多个线程同时调用这个connection,进行数据操作,是否这样做可以?

如果多个线程不能同事调用(引用)一个ADO的Connection(就是一个线程只能调用一个ADO的Connection),只好做Connection的Pool了。
回复
doudouniwan 2003-04-19
ado不是多线程的,他是每次都创建他的一个实例,进行引用。

ok
回复
w_rose 2003-04-19
Sorry!

受到一些人的干扰,我把 ADO 看成 DAO 了!

ADO 如果是通过 ODBC 来完成的,其本身当然是多线程的。
回复
w_rose 2003-04-19
即使是不同进程(不同的exe程序)使用ADO,这些程序也必须在ADO面前排队,ADO要处理完一个查询才会处理下一个。这对于本地数据库处理是非常精简快捷的,对于网络则由于数据锁碰撞(很高)问题变得非常低效。
回复
w_rose 2003-04-19
“用C++开发SQL Server”是什么意思呢?

ADO引擎本身是单独线程的,即使你用多个线程每一个分别创建自己的对于ADO的引用,你的机器上的ADO引擎其实是独立的“进程外服务器”,而且它是单线程的。

或许最新的 ADO 有所改变。你按我的思路去查一下资料吧!
回复
billik 2003-04-18
多个线程同事用一个ADO是否会出现问题?
回复
billik 2003-04-16
最大支撑多少个?
回复
benxie 2003-04-02
VB好像是可以吧。
C不太清楚。
回复
jimmyxing 2003-04-02
支持。
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2003-04-01 11:34
社区公告
暂无公告