如果这适用于进程和线程之间的通信,请发表评论

时间:2012-03-09 03:12:43

标签: c linux

一个进程中有多个进程和一些线程。所有流程都需要相互通信。一个进程中的线程需要与进程(主线程)进行通信。我想知道这个设计是否有效:

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

  2. 每个线程都有一个msg队列(也使用msgget,msgsnd,msgrcv),以便它可以与mainthread和其他线程通信。因此,线程所驻留的进程将具有进程队列和线程队列,是否有问题?

  3. 我担心项目2,因为我学到的是msgget,msgsnd,msgrcv用于进程间通信。我阅读了有关这些功能的手册。看起来没有提到这些函数是否支持线程。另外,您能否请您参考一些最好的在线Linux / Unix手册?我不擅长它,因为我觉得很难找到我想要的东西,如果函数或信号量可以支持线程/手册。愚蠢的问题,:)。

    请帮忙。感谢。

1 个答案:

答案 0 :(得分:1)

  

因此,线程所在的进程将具有进程队列和线程队列,是否有问题?

没有问题,每个消息队列都由队列ID标识,该队列ID是唯一的,无论线程或进程可以提供此队列ID,都可以访问消息队列。

如果它给你带来任何舒适感,我已经使用消息队列进行完美的线程上下文切换,所以请确保它有效。


通常最好在你的unix / Linux安装上man但是由于你要求提供在线资源,你可以参考 Online Linux Man pages 作为参考。