多线程共享数据保护
王凌 2009-12-18 10:53:21 请教下多线程问题,如标题“多线程共享数据保护”。也看了以前一些朋友提的问题,以及回复。感觉还没有找到正确答案,所有再拿出来提下。
问题的提出:需求是通讯后的数据保存,我采用2个线程一个负责通讯,一个负责数据保存。通讯得到的数据放在内存中,保存的时候直接读取这里的内容。这样的情况相当于1个线程(通讯)在写内存,一个线程(保存)是在读内存。执行周期,通讯次数:保存数据次数=3:1 (既 通讯3次保存一次)。
想问的问题是:1.目前2个线程没有做互斥的保护,一个只读、一个只写。
环境A:单核CPU的情况下,理论上不可能发生写数据的同时又读数据,因此数据肯定是正确的,也不必保护。
这样理解对不?
环境B:多核CPU的情况下,理论上会发生写数据的同时又读数据,因此数据有可能是错误的,需要保护。
这样理解对不?
2.多核CPU情况下,二个线程操作同一内存区,同时读同时写是不是真的“同时”--时间完全没有先后?还是
说时间先后可以忽略?