gpt4 book ai didi

node.js - 在 Node js 中,libuv 是什么?它是否使用所有核心?

转载 作者:太空宇宙 更新时间:2023-11-03 21:49:11 28 4
gpt4 key购买 nike

据我所知,所有的IO请求和其他异步任务都是由nodejs中的libuv完成的。我想知道 libuv 是否正在使用线程。如果是,是否使用所有可用的核心?

最佳答案

首先,什么是libuv。正如 documentation 中提到的,它是一个专注于异步 I/O 的多平台支持库

libuv 不将线程用于异步任务,而是用于那些本质上不是异步的任务。
例如,它不使用线程来处理套接字,而是使用线程使同步 fs 调用异步。

涉及线程时,libuv uses a thread pool您可以使用 UV_THREADPOOL_SIZE 在编译时更改其大小。
node.js 附带了 libuv 的预编译版本,因此提供了固定的 UV_THREADPOOL_SIZE 参数。
不用说,它与您的芯片的核心数量无关。

我很想确认您可以安全地忽略该主题,因为 libuvnode.js 不会出于其目的而大量使用线程(除非您以一种非常不正当的方式使用它们,或者如果您正在运行大量 libuv 工作请求)。
如果您像大多数用户一样需要,请随意为每个核心运行一个 node.js 实例。

design overview section libuv的关于这一点也说得很清楚了:

The I/O (or event) loop is the central part of libuv. It establishes the content for all I/O operations, and it’s meant to be tied to a single thread. One can run multiple event loops as long as each runs in a different thread.

关于node.js - 在 Node js 中,libuv 是什么?它是否使用所有核心?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46753611/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com