gpt4 book ai didi

c - 请评论这是否适用于进程和线程之间的通信

转载 作者:太空狗 更新时间:2023-10-29 12:36:45 24 4
gpt4 key购买 nike

有几个进程,一个进程中有一些线程。所有进程都需要相互交谈。一个进程中的线程需要与进程(主线程)对话。我想知道这个设计是否可行:

  1. 每个进程都有一个消息队列(使用 msgget()、msgsnd、msgrcv() ),以便它们可以通过 linux API 相互通信。

  2. 每个线程都有一个消息队列(也使用 msgget、msgsnd、msgrcv),以便它可以与主线程和其他线程通信。那么,这个线程所在的进程会有进程队列和线程队列,有什么问题吗?

我担心第 2 项,因为我了解到 msgget、msgsnd、msgrcv 用于进程间通信。我阅读了有关这些功能的手册。似乎没有提及这些函数是否支持线程。另外,你能给我推荐一些最好的在线 Linux/Unix 手册吗?我不擅长它,因为我觉得很难找到我正在寻找的东西,如果一个函数或信号量可以支持线程/手册。愚蠢的问题,:)。

请帮忙。谢谢。

最佳答案

So, this process in which threads are residing will have the process queue and threads' queue, Is there any problem?

不,没有问题,每个消息队列都由一个唯一的队列 ID 标识,线程或进程可以提供此队列 ID 的任何人都可以访问消息队列。

如果它能给您带来任何安慰,我已经使用消息队列来完美地切换线程上下文,所以请放心它可以正常工作。


通常最好只在您的 unix/Linux 安装上使用 man 但由于您要求在线资源,您可以引用 Online Linux Man pages 供引用。

关于c - 请评论这是否适用于进程和线程之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9628437/

24 4 0
文章推荐: c - 来自 socket() 调用的错误
文章推荐: javascript - 单击下拉菜单时如何隐藏默认