免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: xyhost
打印 上一主题 下一主题

多线程访问数据库,临界资源同步的问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2006-06-22 16:06 |只看该作者
两个全局变量不就解决了嘛,搞得那么复杂。
当需要完全锁定的时候就 F_LOCKED =FL_NRW;
当仅需要锁定写操作就 F_LOCLED =FL_NW;
不小需要锁定就 F_LOCKED =FL_WR;
线程在操作数据库时就 switch (F_LOCKED) case ...;
不知道全局变量有什么不好,那么多人放着不用。

论坛徽章:
0
12 [报告]
发表于 2006-06-22 16:26 |只看该作者
原帖由 Momoass 于 2006-6-22 16:06 发表
两个全局变量不就解决了嘛,搞得那么复杂。
当需要完全锁定的时候就 F_LOCKED =FL_NRW;
当仅需要锁定写操作就 F_LOCLED =FL_NW;
不小需要锁定就 F_LOCKED =FL_WR;
线程在操作数据库时就 switch (F_LOCKED) ca ...

偶怎么没想到  
pthread_rwlock_wrlock这样也可以~~~

论坛徽章:
0
13 [报告]
发表于 2006-06-22 16:35 |只看该作者
原帖由 Momoass 于 2006-6-22 16:06 发表
两个全局变量不就解决了嘛,搞得那么复杂。
当需要完全锁定的时候就 F_LOCKED =FL_NRW;
当仅需要锁定写操作就 F_LOCLED =FL_NW;
不小需要锁定就 F_LOCKED =FL_WR;
线程在操作数据库时就 switch (F_LOCKED) ca ...


这样针对一个数据库文件(例如:db.dat)可以实现同步

但是在一个数据库文件内有多个表(2000个表)的时候好像还不行

[ 本帖最后由 xyhost 于 2006-6-22 16:42 编辑 ]

论坛徽章:
0
14 [报告]
发表于 2006-06-22 16:36 |只看该作者
偶没玩过数据库,
用C的时候都是用读写锁的,
具体代码请参考Linux源代码中的读写锁实现

论坛徽章:
0
15 [报告]
发表于 2006-06-22 16:37 |只看该作者
如果是访问数据库的话,正常的数据库肯定会自己处理好的。

论坛徽章:
0
16 [报告]
发表于 2006-06-22 16:38 |只看该作者

re:多线程访问数据库,临界资源同步的问题

原帖由 xyhost 于 2006-6-22 09:28 发表
C 在多个线程访问BerkeleyDB时,
数据库内表的数量很多(2000个以上)

在这个同步问题中,满足下面二个要求:
1) 当一个线程正在写入数据时,其他线程不能写,也不能读。
2) 当一个线程正在读入数据时,其 ...


对临界资源的访问岂不是效率很低?

论坛徽章:
0
17 [报告]
发表于 2006-06-22 16:44 |只看该作者
原帖由 wbyanhust 于 2006-6-22 16:38 发表


对临界资源的访问岂不是效率很低?



就是临界资源的问题,请高手不吝赐教,
有什么更好的办法吗? 谢谢!

[ 本帖最后由 xyhost 于 2006-6-22 16:48 编辑 ]

论坛徽章:
0
18 [报告]
发表于 2006-06-22 16:56 |只看该作者
这也关算法D事么...:wink:

论坛徽章:
0
19 [报告]
发表于 2006-06-22 18:09 |只看该作者
原帖由 xyhost 于 2006-6-22 16:35 发表


这样针对一个数据库文件(例如:db.dat)可以实现同步

但是在一个数据库文件内有多个表(2000个表)的时候好像还不行

全局数组 F_LOCKSTATS[MAX_TABLES];

论坛徽章:
0
20 [报告]
发表于 2006-06-22 19:23 |只看该作者
那位知道BerkeleyDB 关于这方面API接口,请指教,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP