同时写入和读取同一个文件(磁盘是异步的?)

时间:2010-08-30 15:03:28

标签: asynchronous concurrency hard-drive writing

我们正在创建一个Web服务,我们将文件写入磁盘。有时这些文件会在写入的同时被读取。

如果我们这样做 - 从同一个文件写入和读取 - 我们有时会得到长度相同的文件,但里面的一些数据不一样。因此,对于350mb的文件,我们可能会得到20-40个不同的字节。

如果我们有3-4个文件同时被写入和读取,则会出现此问题。这个问题可能是因为无法保证在“写入”磁盘后,实际写入了数据,即磁盘是异步的。

此外,我们正在测试的计算机只是一个标准的macbook pro,所以没有任何类型的花哨的磁盘。

错误可能在其他地方,但我们只是想问这个问题,看看是否有人对这篇文章+阅读事物有所了解。

1 个答案:

答案 0 :(得分:0)

所有现代操作系统都支持并发读取和写入文件(显然,给定一个编写器)。所以这不是操作系统级错误。但执行确保您没有多个线程/进程尝试将数据附加到文件中。

检查您的应用程序代码。检查您正在使用的缓冲区。确保您的应用程序是同步的,并且读者和作者之间没有竞争条件。