-
Notifications
You must be signed in to change notification settings - Fork 5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
消息队列接口设计不合理,rt_mq_recv应该传出消息的实际大小 #5730
Comments
消息队列里的消息体要求是固定等长的 |
见官方API参考手册中"详细描述"一节,其中明确提到: |
描述有问题,上面论坛链接里也有提到几种传递不定长消息的方式。可以看看哪种适合你。 |
感觉这个可以在5.0里改进一下,确实用的很难受,接受发送API里message size那个参数填了根本没啥意义 |
mq本身是用于快速的,小批量的消息传输,并不是还针对每个消息还设计成变长的。如果是变长方式,内部设计都会变化,一些特性要支持起来也会带来更大的代价。 在接收消息时,可以获得这个消息的长度,这个也许是可以,例如每条消息变成: struct msg{
len_type_t len;
uint8_t data[0];
};
|
确切的说,应该是消息的内存池是肯定是定长的,消息长度不能多于一个消息的内存池大小,但是小于是可以的。因此需要返回实际消息的大小。 |
#7709 此PR已经解决 |
向消息队列发送消息时调用:
可发送指定长度的消息。
而在接受时调用:
无法取到所发送数据的实际长度,必须自己设计数据结构在data中存放长度,造成编程上的不便以及不必要的开销。
建议给recv增加一个可传出实际消息长度的版本,类似这样:
The text was updated successfully, but these errors were encountered: