[問題] IPC的選擇

看板C_and_CPP作者 (涼雨)時間15年前 (2010/06/09 06:55), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串1/8 (看更多)
※ [本文轉錄自 Programming 看板 #1C3ph8ft ] 作者: clarkman (涼雨) 站內: Programming 標題: [問題] IPC的選擇 時間: Wed Jun 9 14:55:00 2010 我要執行三個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 會比較耗時,網路查到都不建議 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: 211.22.144.222 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.22.144.222 ※ 編輯: clarkman 來自: 211.22.144.222 (06/09 14:58)

06/09 16:16, , 1F
Socket
06/09 16:16, 1F

06/10 07:46, , 2F
share memory + synchronization object
06/10 07:46, 2F
文章代碼(AID): #1C3pho-i (C_and_CPP)
討論串 (同標題文章)
以下文章回應了本文 (最舊先):
問題
0
1
問題
1
6
完整討論串 (本文為第 1 之 8 篇):
問題
問題
2
2
問題
5
18
問題
1
4
問題
0
1
問題
0
1
問題
1
6
問題
1
2
文章代碼(AID): #1C3pho-i (C_and_CPP)