gpt4 book ai didi

linux - SysV 消息队列数量增加

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:22:51 28 4
gpt4 key购买 nike

我有一个场景:

1:有一个reader进程和一个writer进程,这些进程通过SysV消息队列进行通信。

2:Writer进程比Reader进程快,也就是说,Writer进程向队列中写入消息的速度比Reader进程读取消息并清空队列的速度快,例如我的队列中有8条消息(单个消息队列)并且 reader 进程尚未读取一条消息,此时 writer 进程试图写入 (msgsnd) 队列中的第 9 条消息。

3:如果我的消息被覆盖,会发生什么情况?

4:或者我在队列中的最后一条或第一条消息将被覆盖?

5: 还是整个队列都会被覆盖?

6:要不然第9条消息会丢失?

7:我如何确保这些情况都不会发生并且我不会丢失任何新的传入消息并且现有消息不会被覆盖?

8:我该如何处理这种情况?

问候

最佳答案

关于第 3 点,manpage of msgsnd

When msgsnd() fails, errno will be set to one among the following values:
...
EAGAIN The message can't be sent due to the msg_qbytes limit for the queue
and IPC_NOWAIT was specified in msgflg.

因此您将无法向队列中添加另一条消息,您需要将它们存储在其他地方。如果您在打开队列时指定了 IPC_NOWAIT,那么消息将会丢失。

关于linux - SysV 消息队列数量增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18634552/

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