【问题标题】:worker pool vs libuv's threadpool in node.jsnode.js 中的工作池与 libuv 的线程池
【发布时间】:2018-05-05 13:32:00
【问题描述】:

我正在阅读关于 worker pool 的 node.js 文档,遇到了两个我认为相同的术语 - worker poollibuv's threadpool

这是混淆点(来自node.js doc url):

这些是使用此工作池的 Node 模块 API:

I/O 密集型

DNS: dns.lookup()dns.lookupService()

文件系统:所有文件系统 API除了fs.FSWatcher() 和那些显式同步的使用 libuv 的线程池

这是我目前的理解:

event loop -> 可以认为是主线程

worker pool -> 由 libuv 实现,所以在这种情况下工作池线程实际上是 libuv 线程。

那么,worker pool 是如何在没有 libuv 的线程的情况下做一些事情的呢?

【问题讨论】:

    标签: node.js multithreading libuv


    【解决方案1】:

    “Worker Pool”和“libuv's threadpool”是一样的。您误解的原因是由于该句子的表述。作为一个非英语母语的人,我明白为什么。

    这个:

    文件系统:除fs.FSWatcher() 和显式同步的文件系统API 之外的所有文件系统API 都使用libuv 的线程池。

    可以这样表述:

    文件系统:所有文件系统 API 都使用 libuv 的线程池,fs.FSWatcher() 和显式同步的除外。

    可以在UV_THREADPOOL_SIZE cli 选项的文档中看到更好的公式,如下所示:

    使用线程池的 Node.js API 是:

    • ...
    • 所有 zlib API,显式同步的 API 除外

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-20
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 2018-05-16
      • 1970-01-01
      相关资源
      最近更新 更多