免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3800 | 回复: 3

多线程操作数据库的问题 [复制链接]

论坛徽章:
0
发表于 2007-05-09 15:36 |显示全部楼层
一个数据接收线程,从消息队列中读取数据,并放入循环缓冲区中。
一个数据处理线程,从循环缓冲区中读取数据,每读取一个数据就进行处理,数据过程是通过调用一个类通过OCCI方式操作数据库,有查询,更新,插入等多种方式。

问题是:

为什么数据处理线程在处理第一个数据时处理一般就不继续运行了,结果是循环缓冲区中的数据越来越多,而数据处理线程还一直指向该缓冲区的头位置。除了停在头位置的现象之外,有时也会处理完一两个数据后再停止。。。


注:
该缓冲区通过了测试的。如果数据处理线程仅仅从缓冲区中接收数据并打印,则运行正常,没有死锁等现象。

数据处理线程所调用的类也是在单线程环境中测试过的,批量处理数据很正常。


系统:Solaris 8, OCCI 9, CC 5.3。

论坛徽章:
38
2017金鸡报晓
日期:2017-02-08 10:39:4215-16赛季CBA联赛之深圳
日期:2023-02-16 14:39:0220周年集字徽章-年
日期:2022-08-31 14:25:28黑曼巴
日期:2022-08-17 18:57:0919周年集字徽章-年
日期:2022-04-25 13:02:5920周年集字徽章-20	
日期:2022-03-29 11:10:4620周年集字徽章-年
日期:2022-03-14 22:35:1820周年集字徽章-周	
日期:2022-03-09 12:51:3220周年集字徽章-年
日期:2022-02-10 13:13:4420周年集字徽章-周	
日期:2022-02-03 12:09:4420周年集字徽章-20	
日期:2022-01-25 20:14:2720周年集字徽章-周	
日期:2022-01-13 15:12:33
发表于 2007-05-09 17:18 |显示全部楼层
如果数据处理线程仅仅从缓冲区中接收数据并打印,则运行正常,没有死锁等现象。


让这个线程做任务时不直接打印,休息随机时间后再打印. 问题就来了.

论坛徽章:
0
发表于 2007-05-09 17:26 |显示全部楼层
数据接收线程 与 数据处理线程 之间的同步没做好吧

论坛徽章:
0
发表于 2007-05-10 11:45 |显示全部楼层
p/v 操作。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP