c - 使用 POSIX QUEUE 完成后要做什么
问题描述
我正在使用 mqueue.h 使用 POSIX 消息队列在线程之间进行通信(用于学校项目演示)。
当我使用队列完成我的两个 pthread 并想要关闭消息队列时,我应该怎么做?
- 从两个线程执行 mq_unlink 和 mq_close
- 从一个线程执行 mq_unlink 和 mq_close
- 只从一个线程执行 mq_unlink
- 仅从两个线程执行 mq_unlink
- 只从一个线程执行 mq_close
- 仅从两个线程执行 mq_close
编辑(因为):“关闭。这个问题需要细节或清晰”
我正在使用 mqueue.h (C) 中定义的 POSIX 消息队列在线程之间发送消息。这类似于与消息队列的进程间通信。我可以使用共享内存进行通信,但这不是我想要做的。我已经成功地在线程之间创建、打开、发送和接收消息,但需要知道完成后该怎么做。我找到了 mq_close 和 mq_unlink,但没有找到有关如何使用它们以及从何处使用它们的信息。这就是我要问的。
解决方案
mq_overview - POSIX 消息队列的概述。
类似于处理文件。
呼吁mq_close
每个mq_open
。
当一个进程使用完队列时,它使用
mq_close
(3) 将其关闭,当不再需要队列时,可以使用mq_unlink
(3) 将其删除。
mq_unlink
可选调用一次。
POSIX 消息队列具有内核持久性:如果没有被
mq_unlink
(3) 删除,则消息队列将一直存在,直到系统关闭。
mq_unlink()
删除指定的消息队列名称。消息队列名称被立即删除。一旦打开队列的任何其他进程关闭引用队列的描述符,队列本身就会被销毁。
推荐阅读
- rgraph - 带有镜像 X 轴的散点图
- linux - 仅在不匹配时比较两个文件并将输出存储在文件中
- encryption - 将单行 RSA 私有 ssh 密钥转换为多行
- c# - ASP.NET Core 2.2 防止对文档/文件的直接 URL 访问
- angular - US Counties map in Highmaps for Angular throws compilation error
- c# - 使用 IComparable 和 IComparer 的多重排序规则?
- c# - Tibco ems 多个消费者
- android - asynctask 函数无法识别结果值
- javascript - Firebase 身份验证,firebase 未定义
- actions-on-google - 如何让用户权利在对话中持续存在