免费注册 查看新帖 |

Chinaunix

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

[C] 钢筋混凝土的UNIX C编程技巧(一、内存映射表)[原创] [复制链接]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
11 [报告]
发表于 2004-11-03 14:55 |只看该作者

钢筋混凝土的UNIX C编程技巧(一、内存映射表)[原创]

[quote]原帖由 "zhujunsoft"]楼主使用了共享内存,请问用共享内存与用内存映射文件(mmap)有什么区别,哪个更好呢,希望大家顶下[/quote 发表:

你说的mmap是windows平台的ipc技术吧,我很长时间没接触windows开发了,据我以前的理解,mmap使用范围比unix的共享内存广,它既可直接用于磁盘文件的映射也可以作为一块内存来使用,但我曾经用过mmap,个人感觉它的稳定性没unix的共享内存好 ^_^

论坛徽章:
0
12 [报告]
发表于 2004-11-03 17:04 |只看该作者

钢筋混凝土的UNIX C编程技巧(一、内存映射表)[原创]

你说的mmap是windows平台的ipc技术吧


mmap 是UNIX系统V标准函数,和WIN 没有关系,WIN下实现共享内存机制是使用和mmap 类似的函数createfile ... 创建共享内存文件来实现的。
回答问题还是考究些。

去GOOGLE 一下
http://www.opengroup.org/onlinepubs/009695399/functions/mmap.html

论坛徽章:
0
13 [报告]
发表于 2004-11-03 17:29 |只看该作者

钢筋混凝土的UNIX C编程技巧(一、内存映射表)[原创]

效率包括两个方面:模块的效率和整体的效率。
也见过一些为了片面追求自己模块的效率而降低了软件系统整体效率的例子,特别是当考量系统整体效率时,这些人还振振有辞地说自己模块的效率没有问题,问题在其它模块上面。殊不知,正是个别人为了某一模块局部效率而对系统资源的无端浪费,才造成了整体系统效率的低下。
说些题外话,供各位参考。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
14 [报告]
发表于 2004-11-03 18:37 |只看该作者

钢筋混凝土的UNIX C编程技巧(一、内存映射表)[原创]

学习中...
啥都不懂 该用户已被删除
15 [报告]
发表于 2004-11-03 20:55 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
16 [报告]
发表于 2004-11-03 22:48 |只看该作者

钢筋混凝土的UNIX C编程技巧(一、内存映射表)[原创]

真不错,支持原创!

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
17 [报告]
发表于 2004-11-03 23:15 |只看该作者

钢筋混凝土的UNIX C编程技巧(一、内存映射表)[原创]

[quote]原帖由 "啥都不懂"]这些东西应该是后台而不是大前置系统的吧。[/quote 发表:

同行,你也是搞银行业务系统的吧
大前置为什么不能用,比如“公共机构对照表”,就是用来联系各个后台帐务机,由前置来控制,不大的静态表,放入共享内存提高查询速度。

论坛徽章:
0
18 [报告]
发表于 2004-11-04 11:10 |只看该作者

钢筋混凝土的UNIX C编程技巧(一、内存映射表)[原创]

共享内存结构如果能设计成hash表的结构,查询效率会高很多。完全可以参考或使用std的hash容器的方法设计。

论坛徽章:
0
19 [报告]
发表于 2004-11-04 13:46 |只看该作者

钢筋混凝土的UNIX C编程技巧(一、内存映射表)[原创]

你这个应该只能在单进程且单线程环境中使用吧?
但是你又用到了共享内存,应该是特意用于可以并发的。

如果都是只读操作,例如你的FetchMapGGXTCS,这个到没有问题。
但是我看到你有一个函数UpdateMapGGXTCS,这个东西如果不提供保护,多进程更新同一个记录马上出现问题。

如果要上锁,可能要考虑读写锁,可能为了效率的原因,不能锁定整个表,还要实现细粒度的锁。这个复杂度马上提升10倍都不止。
还是让数据库去干吧。

论坛徽章:
0
20 [报告]
发表于 2004-11-04 15:10 |只看该作者

钢筋混凝土的UNIX C编程技巧(一、内存映射表)[原创]

楼上看得真仔细!呵呵
俺见过很多用共享内存时不使用锁机制的,以为只是读就不需要上锁。
实际上,要想使应用365*24地运行,那么共享内存中内容的更新就不可避免。如果在读数据时不使用锁机制,那么就不能保证读到的数据的可靠性!
至于是否需要记录级锁,我认为倒是没有必要,更新时全部刷新一下就是了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP