Re: [問題] IPC的選擇
看板Programming作者ikari512 ( //StrategyBass)時間14年前 (2010/07/07 07:16)推噓0(0推 0噓 0→)留言0則, 0人參與討論串2/2 (看更多)
※ 引述《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
討論串 (同標題文章)