作者ftpui (rei)
看板LinuxDev
标题[问题] 共享记忆体同步问题
时间Fri Apr 25 17:21:33 2014
小弟有个问题想请教,
看到资料说明使用Linux提供的共享记忆体机制可让行程A,B之间可以沟通
但必须注意同步问题。
主要提到的情况是当一行程A正在写的同时,另一个行程B也正在读。
或者是两行程A,B都同时在写的情况,针对上述的情况就必须要去做行程间同步机制
我想说要解决上述问题为何不申请两块共享记忆体然後分别配给行程A,B当作它们各自的
写的空间,这样就不会发生两行程同时写同一块共享记忆体的问题。
另外在配合说当行程A写完讯息。会通知行程B来收讯息的条件。
这样就不会发生当一行程A正在写的时候,另一个行程B也正在读的情况
想请问是我想得太简单了吗?????
谢谢大家
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.70.148.97
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/LinuxDev/M.1398417696.A.EEA.html
1F:→ RouterHsieh:就是因为要让两个process能够沟通才用share memory啊 04/25 18:19
2F:→ RouterHsieh:你拆成两块不同的记忆体,他们是要怎麽沟通....= = 04/25 18:19
3F:→ ftpui:不能A去读B写的那块,B去读A写的那块吗 04/25 19:17
4F:→ mshockwave:那不是一样吗?例如A在写时B去读的话呢? 04/25 19:33
5F:→ ftpui:我有加另一个条件行程A写完讯息。会通知行程B来收讯息 04/25 20:23
6F:→ ftpui:也就是说不会有A还在写,B就来读的情况 04/25 20:23
7F:→ ftpui:因为B一定是A写完通知它後,他才会来读走此笔资料 04/25 20:25
8F:推 lmr3796:这样就算是一种同步机制啊XD 04/26 20:17
9F:推 yvb:试着改成, 考虑有 N 个行程, A[1] ... A[N] 时的同步问题. 04/27 16:40
10F:→ uranusjr:要搞到这麽复杂不如直接用个 queue system 算了... 04/28 11:48
11F:推 yvb:啊,我的意思是原PO文章第一段,把 "行程A,B" 换成 "行程A1..AN" 04/28 12:42
12F:→ yvb:而共享记忆体内容,可想像是记忆体中的资料库,也许比较能理解. 04/28 12:47
13F:→ yvb:至於原PO第二段的情况,与其用共享记忆体来做,不如考虑其它方式 04/28 13:00
14F:→ yvb:不如先去了解,有哪些 "行程间通讯" 的方式吧. 04/28 13:03
15F:推 madisces:如果B一定要等A写完才去读,那分两个行程的意义? 04/28 21:06
16F:推 yvb:楼上, A 和 B 除了读写以外, 难道就不能有各自要做的事吗? 04/29 23:00