【问题标题】:Writing to and reading from the same file, at the same time (disk being asynchronous?)同时写入和读取同一个文件(磁盘是异步的?)
【发布时间】:2011-04-05 19:43:24
【问题描述】:

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

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

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

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

错误可能在其他地方,但我们只是想问这个问题,看看是否有人知道关于这个写作+阅读的事情。

【问题讨论】:

    标签: asynchronous concurrency hard-drive writing


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢。我们认为是这种情况,但我们找不到错误,所以我们认为我们会问。
    • 我们认为我们找到了这个错误。它在 node.js 中。在此处查看更多信息,pastebin.com/2LReijQC
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-04
    • 2018-11-28
    • 1970-01-01
    • 1970-01-01
    • 2011-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多