POSIX队列配置

POSIX Queue Configuration

本文关键字:配置 队列 POSIX      更新时间:2023-10-16

我想知道如何在linux操作系统上配置posix队列。我知道我可以通过

在sysctl.conf和code中编辑的方法
mq_open(**,**,**);

是否有其他方法可以配置每个队列的消息数和队列的数量?

你在混合洋葱的不同层。

  1. 在单个队列层,队列属性(mq_maxmsgmq_msgsize)在创建队列时是固定的,不能更改。mq_curmsgs没有任何意义的改变,除非你正在寻找打乱你的队列,只能通过mq_getattr查询。可以通过mq_setattr '更改mq_flags,但要更改的唯一标志是切换队列的阻塞/非阻塞状态。

    作为实际问题,编写简单的命令行实用程序来完成上述大部分工作是很容易的,而且许多组织已经拥有它们。它们通常是开发人员为自己编写的第一批使用队列的程序。有些系统会将这些小工具合并到应用程序的启动和关闭脚本中。

  2. 在进程层,对消息优先级(MQ_PRIO_MAX)和进程可以打开的队列数量(MQ_OPEN_MAX)有限制。在linux中,这两个都不是真正的问题。最大优先级是32k - sysconf(_SC_MQ_PRIO_MAX) -如果你使用这么多优先级,你就会遇到一些真正的设计问题。因为linux中的mqd_t类型是文件描述符,所以开放队列数量的真正限制因素是一个进程限制的文件描述符的总数。

  3. 在系统级,/proc/sys/fs/mqueue中有限制文件,可以通过适当的权限进行更改。(a) queues_max是系统允许的队列数量的上限,但是特权用户在达到这个限制后仍然可以创建队列。(b) msgsize_max是由非特权进程创建的消息的最大消息大小。(c) msg_max是队列允许的最大消息大小。(d) Linux在/proc/sys/fs/mqueue中也有两个文件msg_defaultmsgsize_default,应该是不言自明的。