【发布时间】:2017-05-13 23:09:54
【问题描述】:
在我的 C 软件中,我创建了 10 个线程(多线程)并将消息写入消息队列。我还创建了另外 1 个线程来监控队列并从队列的另一端排出数据。
运行正常,但消息大小卡在默认值 (10)。
我从论坛了解到通过运行“echo number>/proc/sys/fs/mqueue/msg_max”来增加 mqueue 大小,我在 Linux (Ubuntu) 中将“number”设置为 100。
但是在此更改之后,当我再次执行我的软件时,我无法创建 (pthread_create) 超过 4 个线程。其他 7 个线程创建报告错误。除了队列太小之外,一切都很好。
请问如何恢复msg_max的默认值,以便再次运行软件?
还有其他方法可以增加 mqueue 的大小吗?
非常感谢。
干杯,
珍妮丝
【问题讨论】:
-
你试过
echo 10>/proc/sys/fs/mqueue/msg_max吗? -
/proc/sys/fs/mqueue/msg_max更改队列中的最大消息数。您的代码可能还有其他问题,但我们无法知道,因为您根本没有显示任何 C 代码。 -
非常感谢您的建议。我们尝试了 10 > /proc/sys/fs/mqueue/msg_max 并且一切都很好。
标签: c multithreading mqueue