gpt4 book ai didi

c - 使用 POSIX QUEUE 完成后该怎么做

转载 作者:行者123 更新时间:2023-11-30 14:31:51 25 4
gpt4 key购买 nike

我正在使用 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

编辑(因为):“已结束。此问题需要详细信息或澄清”

我正在使用 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.

关于c - 使用 POSIX QUEUE 完成后该怎么做,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60042875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com