找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 4883|回复: 1

ACE_Message_Block::crunch()方法的作用是什么?

[复制链接]
发表于 2008-7-15 23:20:54 | 显示全部楼层 |阅读模式
xl的精彩解析:
      实际上是一个数据操作。就是把后面的数据移到头部,用处是:
比如,做协议的时候,TCP的数据是以流的方式进来的,那么你从ACE_Message_Block中按照协议的方式取数据,前面的数据取完了自然没有用了,要留出空间收后面的数据,那么你可以crunch一下,把读指针之前的数据释放,然后把后面的数据整体往前移动一下。
      那为啥要移动呢?这个有现实的需要,比如运行的程序内存受限(嵌入式),为了减少整体内存的需要等等。
ACE_Message_Block的空间在有限的情况下,对于处理象TCP这样的流式数据的时候,你并不知道会收到多少数据,所以,用这个办法可以简化内存的管理。用这个函数把处理完的数据清掉,然后把剩余的数据移动到头部,把后面的空间用于接受新的数据,就是这样。
 楼主| 发表于 2008-7-15 23:21:05 | 显示全部楼层
他的本质就是把read指针到write指针之间的内存移动到从0开始的内存里。看一下源代码就可以知道了。
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

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

GMT+8, 2024-5-3 18:21 , Processed in 0.026639 second(s), 7 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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