[問題] 共享記憶體同步問題

看板LinuxDev作者 (rei)時間11年前 (2014/04/25 17:21), 編輯推噓5(5011)
留言16則, 7人參與, 最新討論串1/1
小弟有個問題想請教, 看到資料說明使用Linux提供的共享記憶體機制可讓行程A,B之間可以溝通 但必須注意同步問題。 主要提到的情況是當一行程A正在寫的同時,另一個行程B也正在讀。 或者是兩行程A,B都同時在寫的情況,針對上述的情況就必須要去做行程間同步機制 我想說要解決上述問題為何不申請兩塊共享記憶體然後分別配給行程A,B當作它們各自的 寫的空間,這樣就不會發生兩行程同時寫同一塊共享記憶體的問題。 另外在配合說當行程A寫完訊息。會通知行程B來收訊息的條件。 這樣就不會發生當一行程A正在寫的時候,另一個行程B也正在讀的情況 想請問是我想得太簡單了嗎????? 謝謝大家 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.70.148.97 ※ 文章網址: http://www.ptt.cc/bbs/LinuxDev/M.1398417696.A.EEA.html

04/25 18:19, , 1F
就是因為要讓兩個process能夠溝通才用share memory啊
04/25 18:19, 1F

04/25 18:19, , 2F
你拆成兩塊不同的記憶體,他們是要怎麼溝通....= =
04/25 18:19, 2F

04/25 19:17, , 3F
不能A去讀B寫的那塊,B去讀A寫的那塊嗎
04/25 19:17, 3F

04/25 19:33, , 4F
那不是一樣嗎?例如A在寫時B去讀的話呢?
04/25 19:33, 4F

04/25 20:23, , 5F
我有加另一個條件行程A寫完訊息。會通知行程B來收訊息
04/25 20:23, 5F

04/25 20:23, , 6F
也就是說不會有A還在寫,B就來讀的情況
04/25 20:23, 6F

04/25 20:25, , 7F
因為B一定是A寫完通知它後,他才會來讀走此筆資料
04/25 20:25, 7F

04/26 20:17, , 8F
這樣就算是一種同步機制啊XD
04/26 20:17, 8F

04/27 16:40, , 9F
試著改成, 考慮有 N 個行程, A[1] ... A[N] 時的同步問題.
04/27 16:40, 9F

04/28 11:48, , 10F
要搞到這麼複雜不如直接用個 queue system 算了...
04/28 11:48, 10F

04/28 12:42, , 11F
啊,我的意思是原PO文章第一段,把 "行程A,B" 換成 "行程A1..AN"
04/28 12:42, 11F

04/28 12:47, , 12F
而共享記憶體內容,可想像是記憶體中的資料庫,也許比較能理解.
04/28 12:47, 12F

04/28 13:00, , 13F
至於原PO第二段的情況,與其用共享記憶體來做,不如考慮其它方式
04/28 13:00, 13F

04/28 13:03, , 14F
不如先去了解,有哪些 "行程間通訊" 的方式吧.
04/28 13:03, 14F

04/28 21:06, , 15F
如果B一定要等A寫完才去讀,那分兩個行程的意義?
04/28 21:06, 15F

04/29 23:00, , 16F
樓上, A 和 B 除了讀寫以外, 難道就不能有各自要做的事嗎?
04/29 23:00, 16F
文章代碼(AID): #1JMYaWxg (LinuxDev)
文章代碼(AID): #1JMYaWxg (LinuxDev)