如何解决是否可以在Node.js中一次从两个线程写入文件?
我用不太清晰的语言或多或少地发现了这个问题asked elsewhere,但答案是
“我怀疑您有任何理由。”
这似乎并不是一个有效的答案,考虑到从根本上讲(很可能不是),这将使我们能够更快地在并行线程中生成大型文件(超过100GB)。现在,如果您的数据结构实际上可以用这种并行方式编写,则您可以只在16个线程上写入16个不同的文件,然后每天调用它。那可能就是我要做的。
但是出于好奇,我们真的非常希望将所有数据存储在一个文件中。可以多个
fs.createWriteStream(filePath)
是从单独的线程中调用并成功并行写入同一文件中的位置吗?
我在文档中找不到任何相关信息,尽管我怀疑答案只是“否”。
解决方法
您不能同时从两个单独的线程安全地附加到同一文件。每个线程都有自己的文件句柄和写入位置,并且每个文件向其写入数据的位置都存在并发问题。
是否可以从单独的线程中调用多个
fs.createWriteStream(filePath)
并成功地并行写入同一文件中的位置?
不。您不能安全地这样做。每个线程都会遇到并发问题,以跟踪应将写入位置设置在何处。您将需要一些并发管理来对写入进行排序,并跟踪每个写入位置。
您可能只需要一个线程来执行所有写入操作,并且可以将生成数据的每个线程将其数据发送到执行写入操作的一个线程中,以安全地对写入进行排序。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。