POSIX队列配置
POSIX Queue Configuration
我想知道如何在linux操作系统上配置posix队列。我知道我可以通过
在sysctl.conf和code中编辑的方法mq_open(**,**,**);
是否有其他方法可以配置每个队列的消息数和队列的数量?
你在混合洋葱的不同层。
-
在单个队列层,队列属性(
mq_maxmsg
和mq_msgsize
)在创建队列时是固定的,不能更改。mq_curmsgs
没有任何意义的改变,除非你正在寻找打乱你的队列,只能通过mq_getattr
查询。可以通过mq_setattr '更改mq_flags
,但要更改的唯一标志是切换队列的阻塞/非阻塞状态。作为实际问题,编写简单的命令行实用程序来完成上述大部分工作是很容易的,而且许多组织已经拥有它们。它们通常是开发人员为自己编写的第一批使用队列的程序。有些系统会将这些小工具合并到应用程序的启动和关闭脚本中。
-
在进程层,对消息优先级(
MQ_PRIO_MAX
)和进程可以打开的队列数量(MQ_OPEN_MAX
)有限制。在linux中,这两个都不是真正的问题。最大优先级是32k -sysconf(_SC_MQ_PRIO_MAX)
-如果你使用这么多优先级,你就会遇到一些真正的设计问题。因为linux中的mqd_t
类型是文件描述符,所以开放队列数量的真正限制因素是一个进程限制的文件描述符的总数。 -
在系统级,
/proc/sys/fs/mqueue
中有限制文件,可以通过适当的权限进行更改。(a)queues_max
是系统允许的队列数量的上限,但是特权用户在达到这个限制后仍然可以创建队列。(b)msgsize_max
是由非特权进程创建的消息的最大消息大小。(c)msg_max
是队列允许的最大消息大小。(d) Linux在/proc/sys/fs/mqueue
中也有两个文件msg_default
和msgsize_default
,应该是不言自明的。
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- boost::进程间消息队列引发错误
- 如果我只是不访问queue_front节点的子节点,而是将它们推到队列中呢?还是BFS吗
- 无法找到/读取配置文件.conf-FileIOException
- Android NDK传感器向事件队列报告奇怪的间隔
- C++优先级队列,按对象的唯一指针的特定方法升序排列
- 按对象的特定方法按升序排列的C++优先级队列
- 使用2个键的cpp-stl::优先级队列排序不正确
- 在WSL:configure_file上对config_file的每次调用都失败:配置文件时出现问题
- 一种在C++中读取TXT配置文件的简单方法
- 生成MRPT库时cmake配置失败
- 我是否需要在下一次转移时将所有权*转移回转移队列
- 在一个读写器队列中,我可以用volatile替换原子吗
- 为什么我的多线程作业队列崩溃
- FFMPEG配置文件级别id大小无效
- 尝试将lambda函数放在队列中时出现一般分配器错误(可能是与unique_ptr有关的错误)
- 如何通过Conan和CMake找到用于pkg配置的.pc文件
- 使用"Task"函数指针队列定义作业管理器
- 在c++队列中使用pop和visit实现线程安全
- POSIX队列配置