c - 增加 mqueue 消息大小后无法创建多线程

标签 c multithreading mqueue

在我的 C 软件中,我创建了 10 个线程(多线程)并将消息写入消息队列中。我还创建了另外 1 个线程来监视队列并从队列的另一端排出数据。

运行正常,但消息大小停留在默认值 (10)。

我从论坛了解到通过运行“echo number>/proc/sys/fs/mqueue/msg_max”来增加 mqueue 大小,在 Linux (Ubuntu) 中我将“number”设置为 100。

但是在此更改之后,当我再次执行我的软件时,我无法创建 (pthread_create) 超过 4 个线程。其他7个线程创建报错。之前一切都还好,只是队列太小了。

请问如何恢复msg_max的默认值以便再次运行软件?

还有其他方法可以增加 mqueue 大小吗?

非常感谢。

干杯,

贾妮丝

最佳答案

我们尝试了 10 >/proc/sys/fs/mqueue/msg_max ,一切都恢复正常了。 – 文珍妮

关于c - 增加 mqueue 消息大小后无法创建多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41382860/

相关文章:

c - 在 C 中,如何将 alpha 字符转换为 n 字符串为大写?

计算相同和重复单词的数量

java - 为什么抽象属性在 Runnable 接口(interface)的子类中丢失?

multithreading - 与启用线程的 Perl 相比,为什么非线程 Perl 不使用 off64_t 类型?

C++ mq_receive EMSGSIZE问题

c++ - round()函数产生一个奇数

c - 如何使用 "++"操作来增加C中结构中char数组的指针?

c++ - Meyers 的 Singleton 模式线程安全实现吗?

c++ - linux mq_open 忽略 mq_msgsize 属性

c - 通过消息队列发送void*对象[linux]