[问题] 共享内存同步问题

楼主: 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