2012-03-09 47 views
2

在一个进程中有几个进程和一些线程。所有的流程都需要相互交流。一个进程中的线程需要与进程交互(主线程)。我想知道如果这个设计作品:请注释,如果这适用于进程和线程之间的通信

  1. 每一道工序都有MSG队列(使用msgget()的msgsnd,msgrcv()),以便它们可以被Linux API互相交谈。

  2. 每个线程都有一个msg队列(也使用msgget,msgsnd,msgrcv),以便它可以与主线程和其他线程交谈。所以,这个线程驻留的进程将拥有进程队列和线程队列,是否有任何问题?

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

请帮助。谢谢。

回答

1

所以,这个线程驻留的进程将有进程队列和线程的队列,是否有任何问题?

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

如果它给了你任何的安慰,我已经使用消息队列的线程上下文切换完美无瑕,所以要放心它的作品。


它通常是最好只man在你的Unix/Linux安装,但既然你问了在线资源,您可以参考Online Linux Man pages以供参考。

+0

感谢您的快速响应。我很担心操作系统如何一次识别哪个进程/线程拥有此队列ID,因为此消息队列函数总是在IPC部分提及。也许我正在过度看待它。 :) 再次感谢。 – 2012-03-09 03:22:08