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

作者: ftpui (rei)   2014-04-25 17:21:33
小弟有個問題想請教,
看到資料說明使用Linux提供的共享記憶體機制可讓行程A,B之間可以溝通
但必須注意同步問題。
主要提到的情況是當一行程A正在寫的同時,另一個行程B也正在讀。
或者是兩行程A,B都同時在寫的情況,針對上述的情況就必須要去做行程間同步機制
我想說要解決上述問題為何不申請兩塊共享記憶體然後分別配給行程A,B當作它們各自的
寫的空間,這樣就不會發生兩行程同時寫同一塊共享記憶體的問題。
另外在配合說當行程A寫完訊息。會通知行程B來收訊息的條件。
這樣就不會發生當一行程A正在寫的時候,另一個行程B也正在讀的情況
想請問是我想得太簡單了嗎?????
謝謝大家
作者: RouterHsieh (醉臥美人膝,醒掌天下權)   2014-04-25 18:19:00
就是因為要讓兩個process能夠溝通才用share memory啊你拆成兩塊不同的記憶體,他們是要怎麼溝通....= =
作者: ftpui (rei)   2014-04-25 19:17:00
不能A去讀B寫的那塊,B去讀A寫的那塊嗎
作者: mshockwave (夏克維夫)   2014-04-25 19:33:00
那不是一樣嗎?例如A在寫時B去讀的話呢?
作者: ftpui (rei)   2014-04-25 20:23:00
我有加另一個條件行程A寫完訊息。會通知行程B來收訊息也就是說不會有A還在寫,B就來讀的情況
作者: ftpui (rei)   2014-04-25 20:25:00
因為B一定是A寫完通知它後,他才會來讀走此筆資料
作者: lmr3796 (Toro)   2014-04-26 20:17:00
這樣就算是一種同步機制啊XD
作者: yvb   2014-04-27 16:40:00
試著改成, 考慮有 N 個行程, A[1] ... A[N] 時的同步問題.
作者: uranusjr (←這人是超級笨蛋)   2014-04-28 11:48:00
要搞到這麼複雜不如直接用個 queue system 算了...
作者: yvb   2014-04-28 12:42:00
啊,我的意思是原PO文章第一段,把 "行程A,B" 換成 "行程A1..AN"
作者: yvb   2014-04-28 12:47:00
而共享記憶體內容,可想像是記憶體中的資料庫,也許比較能理解.
作者: yvb   2014-04-28 13:00:00
至於原PO第二段的情況,與其用共享記憶體來做,不如考慮其它方式
作者: yvb   2014-04-28 13:03:00
不如先去了解,有哪些 "行程間通訊" 的方式吧.
作者: madisces   2014-04-28 21:06:00
如果B一定要等A寫完才去讀,那分兩個行程的意義?
作者: yvb   2014-04-29 23:00:00
樓上, A 和 B 除了讀寫以外, 難道就不能有各自要做的事嗎?

Links booklink

Contact Us: admin [ a t ] ucptt.com