b******n 发帖数: 592 | 1 最近需要几个process之间共享内存,我选择将内存都map到一个地址。具体process可以
使用的地址有什么限制么?google没看到什么这方面的介绍。应该怎么选取map到的地址
呢? |
x****u 发帖数: 44466 | 2 让系统自动分配地址给你。
可以
【在 b******n 的大作中提到】 : 最近需要几个process之间共享内存,我选择将内存都map到一个地址。具体process可以 : 使用的地址有什么限制么?google没看到什么这方面的介绍。应该怎么选取map到的地址 : 呢?
|
f*******y 发帖数: 988 | 3 没啥限制,自己顶好KEY和大小,每个程序都知道就可以了
可以
【在 b******n 的大作中提到】 : 最近需要几个process之间共享内存,我选择将内存都map到一个地址。具体process可以 : 使用的地址有什么限制么?google没看到什么这方面的介绍。应该怎么选取map到的地址 : 呢?
|
b******n 发帖数: 592 | 4 那怎么保证地址没有被使用呢。我的程序必须要在内部设定好,所以在编译的时候地址
要确定。大概要有几百兆的数据,我现在用0x300000以上的地址。heap开始的地址是多
少啊?
【在 f*******y 的大作中提到】 : 没啥限制,自己顶好KEY和大小,每个程序都知道就可以了 : : 可以
|
T*****9 发帖数: 2484 | 5 map在堆上吧
brk一下得到当前堆顶地址
【在 b******n 的大作中提到】 : 那怎么保证地址没有被使用呢。我的程序必须要在内部设定好,所以在编译的时候地址 : 要确定。大概要有几百兆的数据,我现在用0x300000以上的地址。heap开始的地址是多 : 少啊?
|
b******n 发帖数: 592 | 6 我得保证所有程序都map到一个地址,不然pointer都实效了
【在 T*****9 的大作中提到】 : map在堆上吧 : brk一下得到当前堆顶地址
|
T*****9 发帖数: 2484 | 7 用shmget
【在 b******n 的大作中提到】 : 我得保证所有程序都map到一个地址,不然pointer都实效了
|
P*****f 发帖数: 2272 | 8 no
map is just map
you can regard heap as a special map
地址
是多
【在 T*****9 的大作中提到】 : map在堆上吧 : brk一下得到当前堆顶地址
|
w***g 发帖数: 5958 | 9 这一点很讨厌. 我觉得没有一个万全的方法. 不过我觉得下面的方法或许成功的可能
性比较大:
0. 所有的程序都是同一个可执行文件.
1. 每个程序都是一开始运行就map共享内存.
2. 第一个程序map共享内存后把地址记下来. 所有后继程序都试图map同样的地址.
最好还是建议你不要用pointer. 如果是C++的话可以自己写个类包装一下pointer, 把共
享内存的其实地址包装进去.
【在 b******n 的大作中提到】 : 我得保证所有程序都map到一个地址,不然pointer都实效了
|
c****e 发帖数: 1453 | 10 windows下面用memory mapped file, 创建在paging file里面, 相当于共享内存, 多个
process通过名字都可以access. |
P*****f 发帖数: 2272 | 11 LZ主要是有程序指针的deference要求一样。
我觉得wdong讲的差不多。
【在 c****e 的大作中提到】 : windows下面用memory mapped file, 创建在paging file里面, 相当于共享内存, 多个 : process通过名字都可以access.
|
b******n 发帖数: 592 | 12 程序已经写成那样了,是C,pointer是不可避免的。如果C++的话就好弄多了。其实这个
问题怎么都比较麻烦,C好处就是比较直白,起码我使用内存的大小都比较明白。C++虽
然可以解决pointer,但是这种内存要grow也比较麻烦
现在觉得如果要共享内存呢,还是用shared library比较好,统一管理。我是程序已经
写成这样了,而且没有办法thread它,只能用process共享了
把共
【在 w***g 的大作中提到】 : 这一点很讨厌. 我觉得没有一个万全的方法. 不过我觉得下面的方法或许成功的可能 : 性比较大: : 0. 所有的程序都是同一个可执行文件. : 1. 每个程序都是一开始运行就map共享内存. : 2. 第一个程序map共享内存后把地址记下来. 所有后继程序都试图map同样的地址. : 最好还是建议你不要用pointer. 如果是C++的话可以自己写个类包装一下pointer, 把共 : 享内存的其实地址包装进去.
|