【发布时间】:2010-10-28 10:10:37
【问题描述】:
如果从不同的进程/线程同时访问文件会发生什么? 我知道没有锁定文件的标准方法,只有操作系统特定的功能。
在我的情况下,文件会经常阅读,很少写入。
现在如果A 打开一个文件进行读取(ifstream)并开始读取块。并且B 打开同一个文件进行写入(ofstream)并开始写入。会发生什么?有明确的行为吗?
编辑 我的目标是对许多文件进行并发读写访问。但是写访问不会经常发生。如果 fstreams 保证文件内容不会混淆,我会很满意。
例如: 进程 1 和 2 写入文件 A。如果它们同时写入,我不关心 1 或 2 的版本是否写入磁盘,只要它是文件的一致版本即可。
如果一个进程读取一个文件,另一个进程同时写入,我希望读取进程获取文件的“旧”版本。
如果 fstreams 不能处理这个问题,我将使用数据库。
【问题讨论】:
-
正如你所说,这都是特定于操作系统的。您使用的是哪个操作系统?或者您正在寻找便携式解决方案?
-
便携式是首选,但我在 linux 上。问题是 fstreams 是否有定义的行为...
-
据我所知,没有,没有明确的行为。
标签: c++ file-io concurrency fstream