织梦CMS - 轻松建站从此开始!

罗索

选用ACE内存池的问题

罗索客 发布于 2007-07-25 17:48 点击:次 
问题的起源,我在redhat 9.0下采用ACE开发一个多线程网络服务程序,内核2.4.20-8smp ,使用GCC版本3。2。2 20030222进行编译 ,结果发现在线程中间采用new 符号分配的内存不在进程的堆之中,而在线程的栈里面,具体的体现是new以后别的线程可以访问这个内存区,但是随着
TAG:

首先问题的起源,我在redhat 9.0下采用ACE开发一个多线程网络服务程序,内核2.4.20-8smp ,使用GCC版本3。2。2 20030222进行编译 ,结果发现在线程中间采用new 符号分配的内存不在进程的堆之中,而在线程的栈里面,具体的体现是new以后别的线程可以访问这个内存区,但是随着调用new的线程的退出(退出前并未调用delete或者相关操作),new得到的内存区随之变成不可用(别的线程调用该内存引发段错误),这是GCC的问题??

由于以上原因,并且担心自己做new + delete会在长时间运行期间引发内存碎片问题,现在打算使用ACE中的内存池技术部分,ACE教材上面列到的内存池有
ACE_MMAP_Memory_Pool 基于内存映射的内存池
ACE_Lite_MMAP_Memory_Pool 基于内存映射文件的内存池的轻量级版本
ACE_Shared_Memory_Pool 基于System V共享内存的内存池
ACE_Local_Memory_Pool 基于C++new操作的内存池
ACE_Pagefile_Memory_Pool 基于从windows页面文件分配的匿名内存区内存池
ACE_Sbrk_Memory_Pool 基于sbrk(2)的内存池

其中教材提示到内存池的选用有可能会和固定的操作系统有关,那么请教高手我这个情况该选用什么内存池,希望您有实践经验来验证一个内存池的应用是简单、正确、有效的。

楼主mobe(被研究生)

(被研究生)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/200707/6758.html]
本文出处:网络博客 作者:被研究生
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容