gpt4 book ai didi

c - Linux的消息队列有什么缺点?

转载 作者:IT王子 更新时间:2023-10-29 00:27:00 27 4
gpt4 key购买 nike

我正在研究用于嵌入式 Linux 进程间通信的消息队列。我想知道为什么我不使用 Linux 提供的消息队列,如下所示:

msgctl、msgget msgrcv、msgsnd。

而不是创建共享内存,并与信号量同步?

直接在商业嵌入式产品上使用这组函数有什么缺点?

最佳答案

函数msgctl() , msgget() , msgrcv() , 和 msgsnd()是“System V IPC”消息队列函数。他们会为你工作,但他们相当重量级。它们由 POSIX 标准化。

POSIX 还提供了一组更现代的函数,mq_close() , mq_getattr() , mq_notify() , mq_open() , mq_receive() , mq_send() , mq_setattr() , 和 mq_unlink()这对你来说可能更好(这样的财富令人尴尬)。

但是,您需要检查默认情况下在您的目标平台上安装了哪个(如果有的话)。尤其是在嵌入式系统中,您可能必须配置它们,甚至安装它们,因为默认情况下它们不存在(共享内存和信号量可能也是如此)。

任何一组消息工具的主要优点是它们是预调试的(可能),因此已经解决了并发问题 - 而如果你打算自己用共享内存和信号量来做,你已经要达到相同级别的功能,还有很多工作要做。

因此,尽可能(重新)使用。如果可以,请使用两个消息队列系统之一,而不是重新发明自己的系统。如果您最终发现存在性能瓶颈或类似问题,那么您可以研究编写自己的替代方案,但在此之前 — 重用!

关于c - Linux的消息队列有什么缺点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9562878/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com