使用 POSIX QUEUE 完成后要做什么

What to do when done using POSIX QUEUE

我正在使用mqueue.h使用POSIX消息队列进行线程间通信(学校项目演示)

当我使用队列完成我的两个 pthread 并想关闭消息队列时,我应该怎么做?

  1. 从两个线程执行 mq_unlink 和 mq_close
  2. 从一个线程中执行 mq_unlink 和 mq_close
  3. 仅在一个线程中执行 mq_unlink
  4. 仅从两个线程执行 mq_unlink
  5. 仅在一个线程中执行 mq_close
  6. 仅从两个线程执行 mq_close

编辑(因为):"Closed. This question needs details or clarity"

我正在使用 mqueue.h (C) 中定义的 POSIX 消息队列在线程之间发送消息。这类似于与消息队列的进程间通信。我可以使用共享内存进行通信,但这不是我想要做的。我已经成功地在线程之间创建、打开、发送和接收消息,但需要知道完成后该做什么。我找到了 mq_close 和 mq_unlink 但没有找到有关如何使用它们以及从何处使用它们的信息。这就是我要问的。

mq_overview - POSIX 消息队列概述。

类似于处理文件。

在每个 mq_open 上调用 mq_close

When a process has finished using the queue, it closes it using mq_close(3), and when the queue is no longer required, it can be deleted using mq_unlink(3).

调用一次mq_unlink可选。

POSIX message queues have kernel persistence: if not removed by mq_unlink(3), a message queue will exist until the system is shut down.

mq_unlink() removes the specified message queue name. The message queue name is removed immediately. The queue itself is destroyed once any other processes that have the queue open close their descriptors referring to the queue.