2009-10-12 141 views

回答

1

一个解决办法是增加消息队列的MSGMNI系统范围最大数量:政策依赖(在Linux上,这个限制可以被读取,并通过的/ proc/sys目录/内核/ msgmni时修改)。

0

这些持久性资源分配的问题(有一个类似与共享内存)是为什么系统V的API通常被认为是过时。在这种情况下,您是否考虑过使用unix域套接字或FIFO而不是消息队列?那些出现在文件系统中,并且可以在不再使用像rm这样的工具时被“清理”。

1

您可以使用mq_setattr更改O_NONBLOCK的消息队列属性。 然后通过读取所有消息,直到返回值表示队列是空的空队列。 现在回退旧的属性。

该方法不是优化运行时间,但它避免了关闭和打开消息队列的需要。