当前位置:  技术问答>linux和unix

共享内存控制问题(如果确实可行,送500分,绝不食言!!!)

    来源: 互联网  发布时间:2015-03-05

    本文导语:  我现在有这样一个问题,由于工作需要,必须将数据库里表的数据取出来放入共享内存中,供其他进程使用。在组织共享内存数据时,一时想不出好的办法。因为表的数据是会更新的(添加,删除),导致共享内存也...

我现在有这样一个问题,由于工作需要,必须将数据库里表的数据取出来放入共享内存中,供其他进程使用。在组织共享内存数据时,一时想不出好的办法。因为表的数据是会更新的(添加,删除),导致共享内存也会更新。
我原先有一个设计,都已经实现了,不过已经被自己现在拍死了,那就是为每张表建一个结构,然后定义一个大的结构,放每个表的数据,然后将这个大结构放入共享内存中。这样的坏处是不方便。如下:
表A
struct A
{
    Field1[10];
    Field2[20];
}
表B
struct B
{
    Field1[10];
    Field2[20];
}

内存结构
struct Mem
{
     A s_A[100];//假设A表里有50行数据
     A s_B[200];//假设B表里有100行数据
}

然后将这个Mem结构放入共享内存,感觉不是很灵活,所以请各位高手帮助!
谢谢!

|
我觉得对于时常需要更新的配置数据,在共享内存中使用链表的形式存储比较方便,特别在删除的时候,明显比数组方便.
apache开放源码有一个apr_ring.h提供了对环形链表操作的接口函数(宏),还是比较方便的,就是有点复杂:)
具体源码你可以到apche网站http://www.apache.org/ 去download.当然也可以自己写一个.

|
你的意思是共享内存的大小也要动态的跟随表内记录的多少来改变,这样恐怕不好实现。
而且你更改共享内存的大小是要耗费资源的,如果表频繁的改动,那么这个效率就难说了。
共享内存我一直都是在申请时定好大小;使用连表在操作时更方便快捷,

我觉得这里最关键的问题是,表的记录会不会超过共享内存的size,但是又不能可劲得往大了去申请,那样就是巨大的浪费了。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux 共享内存介绍及实现代码
  • 多个进程对系统V共享内存进行读写,怎样实现对共享内存部分进行加解锁?
  • linux下进程间通信:共享内存原理及具体用法举例(基于c/c++语言)
  • 程序需要共享内存相当大,但是系统的内存有限
  • IP地址数字互转 iis7站长之家
  • 请教一个关于内存分配的问题(系统和DMA共享一块物理内存空间)
  • 不同用户user之间如何访问共享内存?
  • Unix/linux下如何监测共享内存的使用情况
  • 共享内存问题,高手们请进!!!
  • 判断共享内存中是否有数据
  • 【求助】linux下什么是共享内存,怎么查看。
  • linux下共享内存的覆盖或清空
  • 进程同时访问两个大共享内存,会失败?
  • 共享内存和信号灯同步问题
  • 为什么不将数据直接写入共享内存?
  • aix 的开个共享内存的问题
  • linux下共享内存 函数shmat()的使用!
  • 请详细介绍一下共享内存机制~~
  • 初学者关于共享内存的几个问题-->
  • 文件描述符的限制?(共享内存)
  • 在语言中,什么是共享内存,怎样使用,举例?
  • NFS共享作业时, 在客户端只可以看到服务器端的共享目录,而看不到共享目录下的内容.?
  • 如何共享 共享库(*.so)中的变量?
  • 局域网共享问题:win2000的机器看不到linux机器的共享目录?
  • 用samba共享其它机子访问Linux共享时,机子可以进入,但要打开共享文件夹时提示“无法访问...找不到网络名。”这是什么原因呢?
  • 局域网中的红旗2.0如何共享到win98服务器的联接共享?
  • 局域网共享问题:win2000的机器看不到linux机器的共享目录?解决立即给分
  • 几个servlet共享一些数据 如我从数据库里读出一些重要的设置存入vector 让几个servlet共享 怎么做到?先谢
  • 求助linux普通用户下内存共享(系统V共享)大家进来看看啊!急!!
  • 关于中断共享的问题:ADC 与触摸屏的中断共享
  • 无法访问samba服务器中的共享文件夹


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3