作者ikari512 ( //StrategyBass)
看板Programming
标题Re: [问题] IPC的选择
时间Wed Jul 7 07:16:28 2010
※ 引述《clarkman (凉雨)》之铭言:
: 我要执行三个Process A,B,C
: A、B会将资料送到C处,让C负责写入Sram
: C除了负责写入资料外,还会感应硬体的变化,并且通知A
: 因为这三个Process不是由同一个Father产生,所以造成彼此
: 不知道彼此的Handle,也无法像网路查到的Pipe、Message
: 可以由Father建立通道,再把通道的Handle送给child的两个
: Process。(这点可以给我建议吗?我很大的困惑在这里,不同
: Process怎麽知道共同的通道Handle?)
: 可以请给我一点建议,用哪个方式比较好吗?
: 以下是我查到的方法:
: 1. Pipe
: 本来我想用这个方式,但是Win CE不支援NamedPipe,为了
: 以後的弹性,可能不会使用此方式
: 2. Socket
: 会比较耗时,网路查到都不建议
看起来你的平台是win?不过我还是想提一下
如果是unix
之前曾经研究一下IPC
steven的书上写unix domain socket的速度比一般socket快很多
跟其他IPC方法差不多
所以应该没有耗时的问题
就算有 可以看看是不是在可接受范围内 socket应该算蛮好写的
而win上
http://stackoverflow.com/questions/1114802/when-to-use-named-pipes-in-windows
似乎是说named pipe很类似unix domain socket?
不过你说wince上不支援...
而我也不知道有没有其他类似的机制Orz
参考看看,如果有说错再请你指正..
: 3. Share Memory
: 如果我要用来存Sram,似乎是需要像是封包或一个阵列。
: 用Share Memory可能不能即时收到通知?只能一直去比对更
: 新了哪些地方?怕太费时,也无法即时反应
: 4. WM_COPYDATA
: 这个看起来很适合使用,而且可以使用FindWindow,不过查
: 到的资料都说这个会比较慢反应,而且送出的资料用Point
: 的话,变成送出的资料要一直留着,不然把资料塞到区域变
: 数送出後离开函式,对方收到Point,但指到的位置已经没有
: 资料?
: 另外,如果可以用FindWindow抓到C,A、B可以传给C,那C怎
: 麽送资料给B?也用FindWindow找B的Handle吗?
: 5. Message
: 这个看起来似乎也很适合,但是我不太懂怎麽让不同的几个
: Process可以抓到同一个Message通道?查到的资料都写NT後
: 每个Process都有自己的通道,这样怎麽指定?
: 6. MailSlots
: 无法保证资料可以正确的传递。所以不考虑
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.25.178.164