关于读写File Mapping的同步问题

AgedBOY 2008-03-27 12:09:36
我的问题是这样:

假如我有两个运行中的进程,他们共享同一个File Mapping,一个持续写一个持续读,它们之间没有任何同步机制。

首先声明:根据实践发现没有同步机制也不会出任何冲突问题(数据完整性问题除外)。

我的问题是:我现在要严格保证 读 数据一方必须顺畅的从File Mapping里读取内容,不能任何打磕拌。那么请问,此时在 写 数据一方不停的写的情况下,读数据一方会不会偶尔被阻塞住?

换个说法就是,我的程序里不作同步保护,那么是不是操作系统实际上已经同步过了?(因为只要它同步过,读写双方就有一方被暂时阻塞的可能性)

补充一点:我的程序里,读写双方是在初始化阶段就纷纷用MapViewOfFile获得了LPVOID,然后后续的循环是对着这个LPVOID持续读写的。
...全文
51 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
AgedBOY 2008-03-29
好的,谢谢大家
回复
chenyu2202863 2008-03-27
一楼说对了,单核不是真正意义上的异步执行
回复
不会同步,你应该用进程同步的技术来做同步。
回复
zhoujianhei 2008-03-27
操作系统不会帮你同步的。
一个线程写,另一个线程读不会产生异常,如果考虑到数据的完整性则需要进行同步或使用其它手段,同步并不会降低性能,就是在单CPU中,当一个线程写时,读的线程也是被挂起的。
回复
cnzdgs 2008-03-27
如果你不考虑数据完整性,多个线程同时读写都没有问题。
你至少应该同步处理属于同一集合的数据。
回复
相关推荐
发帖
硬件/系统
创建于2007-09-28

2594

社区成员

VC/MFC 硬件/系统
申请成为版主
帖子事件
创建了帖子
2008-03-27 12:09
社区公告
暂无公告