找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 9194|回复: 1

ACE初用者的若干疑惑,求解。

[复制链接]
发表于 2013-10-11 07:57:46 | 显示全部楼层 |阅读模式
刚接触ACE不久,纯属新人。初步了解了下ACE,深深的被其封装和设计哲学所吸引。但出于一些忧虑和疑惑,一直不敢将其使用于实际的商业项目,当然也有可能是我还不太了解的问题。
第一,初步浏览了下源码,发现在一些高速调用的地方使用new和delete,以及部分赋值操作实现低效,这会不是大大降低整体性能?
第二,在看到windows下的Proactor实现的时候,发现有个问题:假如我成功投递了n(n>=1)个读活写操作,在未完成的情况下,连接断开了,这个时候,这些投递的操作没能回收,这样会不会造成内存泄露?
第三,暂时不问第三了。
发表于 2014-2-19 15:38:17 | 显示全部楼层
    第一个问题,ACE有针对嵌入式应用的考虑,例如在动态分配这块儿,可以预先分配内存,例如ACE_Free_List。至于赋值操作实现低效,没有代码不好分析。
    第二个问题,Windows上的Proactor底层是使用完成端口来实现的,连接断开时,未完成的异步操作会继续通过端口通知应用,从而可以将这些内存回收。实际上,我在使用Proactor时,也经常发现有崩溃的情况,经过分析,发现这主要是由于ACE_Handler派生类对象已经被销毁,但系统仍保留其指针进行通知导致的,后来改为使用连接对象池,如果连接断开,对象被回收到池中,不被销毁,从而避免了这种情况。
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-4-18 18:16 , Processed in 0.016474 second(s), 8 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表