cFS与SB学习记录(四):ReceiveBuffer返回以后,这块内存归谁
第一次只看接口时,CFE_SB_ReceiveBuffer() 很像“从队列拿一块内存,用完再释放”。源码里的行为却有一个很重要的差别:应用拿到的是 SB 管理的借用指针,管道会记住这次交出的缓冲区,下一次接收时再放下前一次引用。
如果这一点没想清楚,很容易把接收指针丢给另一个线程,或者调用名字看起来很合适的 CFE_SB_ReleaseMessageBuffer()。这两种写法都需要重新检查所有权。
第一次只看接口时,CFE_SB_ReceiveBuffer() 很像“从队列拿一块内存,用完再释放”。源码里的行为却有一个很重要的差别:应用拿到的是 SB 管理的借用指针,管道会记住这次交出的缓冲区,下一次接收时再放下前一次引用。
如果这一点没想清楚,很容易把接收指针丢给另一个线程,或者调用名字看起来很合适的 CFE_SB_ReleaseMessageBuffer()。这两种写法都需要重新检查所有权。