node.js是否在内部使用线程线程池?

node.js是否在内部使用线程线程池?,第1张

node.js是否在内部使用线程/线程池?

没有用于文件 *** 作的异步API,因此node.js为此使用了线程池。您可以在libuv的代码中看到它。

该池可以运行4个线程:

static uv_thread_t default_threads[4];

阻塞的FS任务通过uv__work_submit发布。例如,以下是读取的实现方式:

int uv_fs_read(uv_loop_t* loop, uv_fs_t* req,    uv_file file,    void* buf,    size_t len,    int64_t off,    uv_fs_cb cb) {  INIT(READ);  req->file = file;  req->buf = buf;  req->len = len;  req->off = off;  POST;}...#define POST  do {          if ((cb) != NULL) {      uv__work_submit((loop), &(req)->work_req, uv__fs_work, uv__fs_done);          return 0;            }           else {        uv__fs_work(&(req)->work_req);               uv__fs_done(&(req)->work_req, 0);            return (req)->result;           }         }           while (0)

如果您想实现自己的线程,可以查看此精彩介绍。



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5172583.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-18
下一篇2022-11-18

发表评论

登录后才能评论

评论列表(0条)

    保存