peakzhang 发表于 2008-7-15 23:20:54

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

xl的精彩解析:
      实际上是一个数据操作。就是把后面的数据移到头部,用处是:
比如,做协议的时候,TCP的数据是以流的方式进来的,那么你从ACE_Message_Block中按照协议的方式取数据,前面的数据取完了自然没有用了,要留出空间收后面的数据,那么你可以crunch一下,把读指针之前的数据释放,然后把后面的数据整体往前移动一下。
      那为啥要移动呢?这个有现实的需要,比如运行的程序内存受限(嵌入式),为了减少整体内存的需要等等。
ACE_Message_Block的空间在有限的情况下,对于处理象TCP这样的流式数据的时候,你并不知道会收到多少数据,所以,用这个办法可以简化内存的管理。用这个函数把处理完的数据清掉,然后把剩余的数据移动到头部,把后面的空间用于接受新的数据,就是这样。

peakzhang 发表于 2008-7-15 23:21:05

他的本质就是把read指针到write指针之间的内存移动到从0开始的内存里。看一下源代码就可以知道了。
页: [1]
查看完整版本: ACE_Message_Block::crunch()方法的作用是什么?