佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1101|回复: 18

interprocess communication

[复制链接]
发表于 17-10-2007 02:13 PM | 显示全部楼层 |阅读模式
来,大家来讨论一下。。。

如果要做 interprocess communication,

你们会怎么做?

我现在有几个方法。。

1.用fifo pipe
2.socket pair
3. shared memory  (sweemeng's 建议)
4. MP  (sweemeng's 建议)


还有其他的吗?谢谢。

[ 本帖最后由 tensaix2j 于 20-2-2008 06:00 PM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

发表于 17-10-2007 02:37 PM | 显示全部楼层
shared memory?
回复

使用道具 举报

发表于 17-10-2007 06:05 PM | 显示全部楼层
erlang 用的方法呢,和thread相似但是不是thread。
他们沟通的方法是message passing。

[ 本帖最后由 sweemeng 于 17-10-2007 06:10 PM 编辑 ]
回复

使用道具 举报

 楼主| 发表于 17-10-2007 06:27 PM | 显示全部楼层
那你的read /write 是 blocking 还是non blocking 的?
回复

使用道具 举报

发表于 17-10-2007 06:47 PM | 显示全部楼层
huh?

哪一个?

shared memory看你这么用咯。posix的shared memory有define locking的function的咯。
erlang呢,是asynchronus shared nothing,是blocking 吧。

[ 本帖最后由 sweemeng 于 17-10-2007 06:57 PM 编辑 ]
回复

使用道具 举报

 楼主| 发表于 17-10-2007 07:04 PM | 显示全部楼层
我今天要探讨的就是除了用哪一种mechanism,

还有就是说。。
当你 read/write 时, 要不要 停住整个program,直到read/write 有东西。。还是要跑asynchronous, read 时不要block...但我担心两边会 out of sync.

还有 error handling要怎样做才算好。
回复

使用道具 举报

Follow Us
发表于 17-10-2007 07:05 PM | 显示全部楼层
怎么说呢。
erlang呢,每个process有个queue的。所有的message会送到那个process的queue。

每个在queue里的东西会process。然后如果有新的task,送去queue咯。

http://fanf.livejournal.com/76075.html
这里有个比较好的解释。

其实我也是半筒水而已。

[ 本帖最后由 sweemeng 于 17-10-2007 07:12 PM 编辑 ]
回复

使用道具 举报

发表于 17-10-2007 07:50 PM | 显示全部楼层
http://www.erlang.org/white_paper.html

看example 6。里面有解释。
简单来说,erlang 的thread有receive和send function。send 是个non blocking function。你可以随时send。但是receive是blocking,如果没有收到对的message 的话,thread会停着。
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 20-10-2007 07:02 PM | 显示全部楼层
谢谢你的咨讯。等我做了详细研究在回来讨论。
不过,我想,还是会用bsd socket。。。
回复

使用道具 举报

阿牙木 该用户已被删除
发表于 20-10-2007 09:51 PM | 显示全部楼层
interprocess?
我是WINDOWS PROGRAMMER, 所以会用MSMQ
回复

使用道具 举报

发表于 20-10-2007 10:33 PM | 显示全部楼层
先说,我不是很熟悉ms messaging queuing。但是从wikipedia。他不是用在server上吗?

这里的process是不同program instance。而且,不是全部软件可以用msmq的。
回复

使用道具 举报

阿牙木 该用户已被删除
发表于 31-10-2007 04:27 PM | 显示全部楼层
message queue 也可以用在XP上, 他的使用方法就是program 1 丢一个message到某个local private queue里,然后program 2 再吊一个event listener 来抓取message.

只要是在windows 作业系统,就可以用MSMQ了
回复

使用道具 举报

发表于 31-10-2007 10:02 PM | 显示全部楼层
原帖由 阿牙木 于 31-10-2007 04:27 PM 发表

只要是在windows 作业系统,就可以用MSMQ了


知道就好...........

p.s: 不要忘记,世界上不只是有windows这个东西。
回复

使用道具 举报

阿牙木 该用户已被删除
发表于 1-11-2007 08:26 AM | 显示全部楼层
天才楼主在其他帖里的发帖都是围绕MS的,所以我就回答MS的方式咯.
回复

使用道具 举报

发表于 1-11-2007 09:44 AM | 显示全部楼层
原帖由 阿牙木 于 20-10-2007 09:51 PM 发表
interprocess?
我是WINDOWS PROGRAMMER, 所以会用MSMQ


我也是只知道msmq。。。最近在研究着。。。因为新的project要用到它。。
回复

使用道具 举报

发表于 1-11-2007 10:31 AM | 显示全部楼层
原帖由 stupidbanana 于 1-11-2007 09:44 AM 发表


我也是只知道msmq。。。最近在研究着。。。因为新的project要用到它。。

说来听听,俺可能也要用到。。。。remote message
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 1-11-2007 10:43 AM | 显示全部楼层
posix shared mem 很简单,但win32的看到我头hin hin的
回复

使用道具 举报

 楼主| 发表于 1-11-2007 10:49 AM | 显示全部楼层
原帖由 阿牙木 于 1-11-2007 08:26 AM 发表
天才楼主在其他帖里的发帖都是围绕MS的,所以我就回答MS的方式咯.


啊木,这年五月起我已经不是。net programmer了。。
这个project 要run 在一个solaris sun os 5.8的 machine...

但下个月还有另一个project要run on windows的...但不是dot net platform 的。。
而是用vb, vba, 还有vbscript的。。。到时候要请教你们了。。。
回复

使用道具 举报

阿牙木 该用户已被删除
发表于 1-11-2007 11:02 AM | 显示全部楼层

回复 #18 tensaix2j 的帖子

啊哈哈,那是我的UPDATE还不够
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT


本周最热论坛帖子本周最热论坛帖子

ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 23-9-2025 10:09 AM , Processed in 0.163016 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表