Re: [問題] IPC的選擇

看板C_and_CPP作者 (涼雨)時間14年前 (2010/06/10 13:19), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串4/8 (看更多)
※ 引述《areyo (沒有名字的怪物)》之銘言: : : 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都有自己的通道,這樣怎麼指定? : 我的認知.....3 4 5 : 都是講同一件事,你用sendmessage送 WM_COPYDATA這個MESSAGE : 他就是用SHARE MEMORY來達成 : 而會"稍微"慢點原因是跟SENDMESSAGE有關他會等你把MEMORY取走後再回傳 : 當你C行程收到MESSAGE時就把資料COPY一份出來,就跟POINT沒關了 : 所以你不用擔心 所以說如果我想使用share Memory 就必須搭配4、5的方式來通知對方有更新? 如果不使用4、5(因為怕被Win綁太深,以後移植困難) 只用Share Memory處理,對方就無法立即接收反應? 這樣會不會造成已經更新兩次,結果對方發現有更新 結果第一筆的資料已經被第二筆的蓋掉 他能像Socket一樣,資料可以一直接收進來嗎? 如果我在SHARE MEMORY建立一個Ring buffer(存每筆資料的Address) 然後接收方只要不斷檢查in、out有沒有一致,最後進行接收? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.22.144.222 ※ 編輯: clarkman 來自: 211.22.144.222 (06/10 13:30)

06/10 20:34, , 1F
我成功了!感謝
06/10 20:34, 1F
文章代碼(AID): #1C47Nuh- (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
以下文章回應了本文
完整討論串 (本文為第 4 之 8 篇):
文章代碼(AID): #1C47Nuh- (C_and_CPP)