ODAC在多线程方式下的问题!!

特兰 2010-01-27 05:09:15
我写一个程序,多线程执行存储过程,当我故意将线程1的存储过程访问的数据UPDATE上锁后,
线程1的OraStoredProc.ExecProc进入等待状态,我继续进行操作,由于线程1被占用,线程2
启用,但是在添加参数或执行OraStoredProc时候,偶尔会出现操作好象被挂起的感觉,几十秒
到几分钟不等,不过依然可以执行过去,此现象经常出现在线程1被挂起后,线程2或线程3第一次
执行的时候,不过线程2/3第一次等待后就不再出现等待状况,不过重复操作几十到上百次又会发生。

程序最多3个线程,本来我为数据库操作建立了一个CLASS, 里面封装了3个OraSession+OraStoredProc,
后来我改变方法,class中只封装1个OraSession+OraStoredProc, 建立3个class的实例,还是状况依旧。

奇怪,是ODAC的BUG还是其它问题,请前辈们执教下多线程操作ODAC的注意事项。
...全文
79 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
tsingyunlucky 2010-02-23
  • 打赏
  • 举报
回复
是个问题,我都是把事务放到存储过程中去
特兰 2010-01-29
  • 打赏
  • 举报
回复
再顶!
多线程访问数据库的需求应该是比较多的啊,有经验的前辈即使没有
遇到相同的问题,也至少给讲讲我该注意哪些事项啊!
fouthu 2010-01-28
  • 打赏
  • 举报
回复
我是进来学习的。
特兰 2010-01-28
  • 打赏
  • 举报
回复
怎么没有人理我啉!
特兰 2010-01-28
  • 打赏
  • 举报
回复
顶!
特兰 2010-01-27
  • 打赏
  • 举报
回复
补充下:
如果我此时我手动将update上锁的数据rollback,程序中的所有挂起线程将停止等待并立刻成功执行完毕。

数据库oracle 10g

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧