Chinaunix

标题: 求进程间通信问题 [打印本页]

作者: smalloc    时间: 2009-04-23 11:01
标题: 求进程间通信问题
有这样一个需要:
一类进程,他们需要相互通信,每个人发的消息,其他的都要收到,用什么方式比较好?
作者: gz80    时间: 2009-04-23 11:55
observer模式,呵呵。不过你要对它进行多进程通信的扩展
作者: linternt    时间: 2009-04-23 14:24
我认为用共享内存比较合理, 每个人的消怎做为一个结构存入, 结构中存入自已的PID和消息

其它的人可定期检索, 可知道是谁发的消息, 也可利用信号机制随时触发其它进程有新消息到来

可加入统计数据, 消息每个进程都读过之后进行删除!
作者: smalloc    时间: 2009-04-23 14:58
原帖由 gz80 于 2009-4-23 11:55 发表
observer模式,呵呵。不过你要对它进行多进程通信的扩展

不明白observer模式,可否说的更详细些?

原帖由 j1111011 于 2009-4-23 14:20 发表
用UNIX套接字怎么样?
记得有种PF_UNIX,PF_LOCAL之类的能做进程间通信,每个程序开辟一个线程来接收这种状态,并通知程序!

本地还回是可以,但是要每个进程都能侦听而且能发,不知道怎么弄.而且这几个进程不需要是亲缘关系.

原帖由 linternt 于 2009-4-23 14:24 发表
我认为用共享内存比较合理, 每个人的消怎做为一个结构存入, 结构中存入自已的PID和消息

其它的人可定期检索, 可知道是谁发的消息, 也可利用信号机制随时触发其它进程有新消息到来

可加入统计数据, 消息每 ...


我能想到的也是这种方法,但是同步是个问题.而且很麻烦,我想问问有没现有的函数调用能实现我的需求,但是看了unp后没找到..

[ 本帖最后由 smalloc 于 2009-4-23 15:03 编辑 ]
作者: converse    时间: 2009-04-23 15:12
模式使用observer,具体的实现我觉得unix套接字就很好.
作者: smalloc    时间: 2009-04-23 15:26
原帖由 converse 于 2009-4-23 15:12 发表
模式使用observer,具体的实现我觉得unix套接字就很好.

不知道套接字怎么实现,这些进程的个数是不确定的.
作者: smalloc    时间: 2009-04-30 13:05
这个在linux下用netlink貌似可以做到.
SO_REUSEADDR选项加组播好象也能

[ 本帖最后由 smalloc 于 2009-4-30 15:24 编辑 ]




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2