关于VC多线程和数据库的问题! 高分求教!!

zxb 2002-04-18 10:23:45
守护线程从数据库中利用ADO 提取数据(每次提取150条纪录),然后同时启动16个线程,,,线程(单条纪录)对记录集处理数据后,,写入到数据库中。

运行到几千条后,,程序停止,,无任何提示!所有线程均无法跟踪!


线程数降到4时可以安全运行,,

请问,,问题到底处在哪里呢!!




...全文
32 点赞 收藏 12
写回复
12 条回复
zxb 2002年04月22日
我已经找到原因了,,,

谢谢各位!
回复 点赞
BigTemplar 2002年04月19日
你用的是不是Release版,用debug版应该可以看到错误,估计是用了cstring,clist之类的东西,在多线程中不可用
回复 点赞
zxb 2002年04月19日
提示我也加入了,,

可是,,每次程序停止的时候,,最后出现停止提示信息,,不一样,,

我都快搞蒙了,,

还有,,数据库连接数目绝对没有问题的!
回复 点赞
格利高里 2002年04月19日
16个线程有点多了
回复 点赞
格利高里 2002年04月19日
是不是在某些情况下出现死锁了?或者达到了数据库的最大连接数目?在认为可能出问题的地方加入提示看看。
回复 点赞
zxb 2002年04月19日
,,在每个线程都有各自的ADO连接,,

我想不应该有互斥的问题,,

如果,,就是有这个问题,,那问题应该如何解决呢!
回复 点赞
seangun 2002年04月19日
我认为系统设计有问题!
回复 点赞
similar99 2002年04月19日
你好,
你的情况是典型的数据库死锁症状.
当两个事务互相请求对方正在使用的资源, 或者3个以上事务循环请求另一个事务正在使用的资源. (如: A->B, B->C, C->A ). 会导致数据库死锁.
因为使用Update, delete 等SQL 会锁定当前表. 所以建议每个线程在执行Update,Delete时使用信号量或互斥量.
回复 点赞
jeffchen 2002年04月19日
你用的是什么数据库?
处理后的结果会不会有违反数据表规则的情况?
回复 点赞
zxb 2002年04月19日
Release 我也作了,,

效果是一样的,,

你说的CString 这个东西,,我是用了,,

我感觉不是这里面出的问题,,

因为用的是线程内部变量,,应该不会出问题的!
回复 点赞
iceneve 2002年04月18日
记录集指针属于临界资源
回复 点赞
AaronLiu 2002年04月18日
在读写数据库时你进行了互斥了吗?我想问题可能在此。
回复 点赞
发动态
发帖子
进程/线程/DLL
创建于2007-09-28

6376

社区成员

4.9w+

社区内容

VC/MFC 进程/线程/DLL
社区公告
暂无公告