在 Node.js 中的多线程中处理文件



我需要从在线 url 读取一个文件并在多线程中处理它并将其写入另一个输出中。 https://www.w3.org/TR/PNG/iso_8859-1.txt 我尝试过的解决方案: 如果集群是主集群 我根据 cpu 计数分叉了新线程,并在外部循环读取文件。 我必须确保每个线程都有一定的行要在输出文件中打印,因为同一行不应重复。

我不确定这是否是正确的方法。 请分享您的答案或建议。

你能详细说明为什么你认为你应该在不同的线程中处理一些东西吗?

请在此处查看我关于类似问题的详细回复:如何在节点中真正使耗时的请求异步

总结一下:

  • Node.JS 仅在一个线程(主线程)中执行您的 JavaScript 代码
  • 内置模块如fshttpnet等利用libuv工作线程在后台线程中处理I/O
  • 第三方模块可能会做同样的事情,这取决于它们的实现
  • 如果您希望后台线程中执行代码,您有 2 个选项:
    • 编写一个 C 包装器模块,它使用libuv个工作线程来完成这些工作
    • 在 Node.JS 10(文档)中引入的 javascript 代码中使用WorkerThreads,但请注意,此模块的状态是实验性的,尚未准备好投入生产

一般来说,我非常怀疑你想自己使用线程。您的问题表明您要从网络服务器下载文件。可用的模块(fsrequesthttp、...)已经使用后台线程来执行I/O,因此我不清楚您还需要后台处理。

请澄清更多,或者考虑坚持使用可用的模块,以防您不需要"更多多线程"。

最新更新