我需要从在线 url 读取文件并在多线程中处理它并将其写入另一个输出中。https://www.w3.org/TR/PNG/iso_8859-1.txt https://www.w3.org/TR/PNG/iso_8859-1.txt我尝试过的解决方案:
如果集群是主集群
我根据 cpu 计数分叉了新线程,并在 for 循环外部读取文件。
我必须确保每个线程都有特定的行在输出文件中打印,因为不应重复同一行。
我不确定这是否是正确的方法。
请分享您的答案或建议。
您能否详细说明为什么您认为应该在不同的线程中处理某些内容?
请查看我关于类似问题的详细回复:如何真正在节点中使耗时的请求异步 https://stackoverflow.com/questions/54643945/how-to-truly-make-a-time-consuming-request-async-in-node/54644850
总结一下:
- Node.JS 仅在一个线程(主线程)中执行您的 javascript 代码
- 内置模块如
fs
, http
, net
等利用libuv
工作线程在后台线程中处理 I/O
- 第三方模块might做同样的事情,这取决于他们的实施
- If you want your code to be executed in a background thread, you have 2 options:
- 编写一个 C 包装模块,使用
libuv
工作线程来做这些事情
- Use
WorkerThreads
在 Node.JS 10 中引入的 JavaScript 代码中(Docs https://nodejs.org/dist/latest-v10.x/docs/api/worker_threads.html),但请注意该模块的状态是实验性的尚未准备好投入生产
一般来说,我高度怀疑 you want自行使用线程。您的问题表明您想从网络服务器下载文件。可用模块(fs
, request
, http
, ...) 已经使用后台线程进行 I/O,所以我不清楚除此之外还需要后台处理。
请澄清更多信息,或者考虑坚持使用可用的模块,以防您不需要“更多多线程”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)