关于读写File Mapping的同步问题

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

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

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

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

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

补充一点:我的程序里,读写双方是在初始化阶段就纷纷用MapViewOfFile获得了LPVOID,然后后续的循环是对着这个LPVOID持续读写的。
...全文
106 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
AgedBOY 2008-03-29
  • 打赏
  • 举报
回复
好的,谢谢大家
chenyu2202863 2008-03-27
  • 打赏
  • 举报
回复
一楼说对了,单核不是真正意义上的异步执行
  • 打赏
  • 举报
回复
不会同步,你应该用进程同步的技术来做同步。
zhoujianhei 2008-03-27
  • 打赏
  • 举报
回复
操作系统不会帮你同步的。
一个线程写,另一个线程读不会产生异常,如果考虑到数据的完整性则需要进行同步或使用其它手段,同步并不会降低性能,就是在单CPU中,当一个线程写时,读的线程也是被挂起的。
cnzdgs 2008-03-27
  • 打赏
  • 举报
回复
如果你不考虑数据完整性,多个线程同时读写都没有问题。
你至少应该同步处理属于同一集合的数据。

2,643

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧