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

如何把链表放入共享内存??

    来源: 互联网  发布时间:2015-06-11

    本文导语:  我在AIX下要用c++写一个程序,把一个链表放入共享内存(不能改用数组来实现),然后多个进程来使用它(只是读,不修改它的内容),我该如何做到?? | http://www-900.ibm.com/developerWorks/cn/linux/l-ipc/part5/index...

我在AIX下要用c++写一个程序,把一个链表放入共享内存(不能改用数组来实现),然后多个进程来使用它(只是读,不修改它的内容),我该如何做到??

|
http://www-900.ibm.com/developerWorks/cn/linux/l-ipc/part5/index1.shtml

|
可能是说指针所指向的地址可以从堆中分配,也可以从共享内存中分配,用c++的模版。

|
呵呵,是不是这样啊,你的程序需要用到共享内存,但是这块内存是不固定的,如果按照最大值分配,对资源是极大的浪费,
小凤的mmap()能帮到你

|
shmget
shmctl
...

#include 
#include 

|
你想怎么做?或者说你想要得到什么效果呢?
共享内存对于使用者来说,是一块连续的内存,如果一定要它符合你的数据结构,
可以有很多方法来实现,最笨的是把结构数组整个copy过去,
呵呵,你不会是想动态的使用共享内存吧,共享内存的大小在你申请时就定义好了,如果你不停的动态申请释放,系统开销是很大的。
如果业务系统比较复杂,可以参考进程池。

|
shmget得到一个共享内存区,返回共享内存段的标识符
shmat接受上边的标识符,返回共享内存的地址

知道了首地址,你就用个循环把你的链表中的数据copy过去吧~~~

|
我想楼主的意思是需要管理一个内存池,以后每次链表中的节点需要申请内存时都从共享内存中划分一块内存吧。如果是这样还是有点麻烦的,我倒是弄过一下,不过效率很差哦。

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












  • 相关文章推荐
  • Linux中文件详细列表信息放入另一个文件内?
  • 我下载了一个media包,不知道怎么放入JDK中才能用,请各位指教,50分。
  • 如何将2个数字放入到 int32位的高16位和低16位?
  • 使用FC4一个奇怪问题,放入光盘后死机?
  • shell放入计划日志的问题!!!
  • 应该怎么样将一个对象放入到数据库里?还有怎么将图片放进数据库?急~~
  • 如何将数据集以对象形式放入一个集合中?
  • 我自己的写的类,放入classpath,怎么tomcat4的jsp找不到?
  • Oracle将查询的结果放入一张自定义表中并再查询数据
  • Aix系统,进入后。找到/mnt这个文件夹,光盘已放入,但里面什么都没有 ,。
  • 将DLL放入到资源中,运行时自动加载的小例子
  • linux如何主动将线程放入到线程调度队列中重新排队?
  • 各位,救急呀!怎样将ResultSet中的数据逐行放入Vector对象中??
  • php将session放入memcached的设置方法
  • java连接数据库,将statement,connection放入一个状态类,其他的类调用,
  • JTable里面,当鼠标选定一条记录时,如何获取该记录的某个字段并放入一个jTextField?
  • 在JBuilder4中做一个applet用jdbc连接Oracle数据库,怎样放入IE中运行?!


  • 站内导航:


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

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

    浙ICP备11055608号-3