由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - map shared memory to local process
相关主题
请问用mmap分配的共享内存如何回收?is smart_ptr really that good?
请问关于 share memory 的问题pointer overflow
c++ 里用到pointer 的地方我们尽可能用smart pointer吗?C++ Q05: pointer to constant variable
A question about page tableC++ Q93 - Q95 (转载)
程序占用很大内存int F::*x = &F::x是什么意思?
请教关于C++内存管理不如各位高手挑个专题讲讲C++11吧
琢磨了一下c++ smart pointer,发现不能到处用Go adopts JavaScript’s idea of semicolon insertion
Why do I need to use "plain" pointer?dereference a NULL pointer in C
相关话题的讨论汇总
话题: map话题: 地址话题: process话题: shared话题: 共享内存
进入Programming版参与讨论
1 (共1页)
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, 把共
: 享内存的其实地址包装进去.

1 (共1页)
进入Programming版参与讨论
相关主题
dereference a NULL pointer in C程序占用很大内存
shared_ptr and dynamic_pointer_cast请教关于C++内存管理
关于shared pointer的问题琢磨了一下c++ smart pointer,发现不能到处用
shared_ptr处理stack上面的指针Why do I need to use "plain" pointer?
请问用mmap分配的共享内存如何回收?is smart_ptr really that good?
请问关于 share memory 的问题pointer overflow
c++ 里用到pointer 的地方我们尽可能用smart pointer吗?C++ Q05: pointer to constant variable
A question about page tableC++ Q93 - Q95 (转载)
相关话题的讨论汇总
话题: map话题: 地址话题: process话题: shared话题: 共享内存