libuv相关内容

关于 node.js 内部异步 I/O 机制的困惑

我了解到 node.js 在内部使用 libeio 在 *nix 平台上使用线程池执行异步文件 I/O,对吗? 异步网络 I/O 怎么样?是由 libev 完成的吗?还有线程池吗? 如果内部有线程池,它如何比传统的每请求一个线程模型更高效?每个 I/O 请求是一个线程吗? Windows 上的机制是什么?我知道它是由 IOCP 完成的,并且有一个内核级线程池,对吗? 为什么 linux 还 ..
发布时间:2022-01-04 08:32:20 服务器开发

nextTick 是否意味着 Node.js(事件循环)的下一阶段?

process.nextTick 到底是什么意思? nextTick 是否意味着,在当前阶段的一个元素的回调队列弹出后?或者在执行当前阶段队列中的所有回调之后进入下一阶段之前? 解决方案 这在 the文档. nextTick 将要在当前刻度结束时调用的回调排队.整个队列在移动到下一个滴答之前被清空. 与 setImmediate 对比,后者将回调排队到在下一个勾号期间调用 ..
发布时间:2021-09-15 20:29:05 其他开发

NodeJS 事件循环的确切处理是什么?

我知道 NodeJS 事件循环从事件队列中收集任务并将控制权转移到任务的回调.任务完成后,任务从事件循环中转移控制权. 因此,我认为实际上返回回调是一个从 Task 获得控制权的 Event Loop. 这是正确的想法吗? 另外,如果关于 Event Loop 中可能发生的阻塞现象的假设是正确的,如果有一个延迟的异步任务,事件循环是否可以在等待任务返回控制权的同时处理其他任务? ..
发布时间:2021-09-15 20:28:54 前端开发

JavaScript 内部:事件循环运行的时间间隔是多少?

这是一个关于 JavaScript 内部的问题. 假设我有 10 个异步任务,它们都需要 x 秒来运行.在等待响应时,脚本处于空闲状态. JavaScript 引擎在后台询问“任务队列中是否有任何内容".据我了解,这是一个循环.因此,事件循环.我知道在 Node 中这是用 Libuv 实现的.我读过这篇文章,它解释了一点:https://nikhilm.github.io/uvbook ..
发布时间:2021-09-15 20:28:10 前端开发

两次调用某个回调函数会导致分段错误:Nan

我正在编写 C++ 插件,使用 nbind - GitHub 链接 和 Nan - GitHub 链接 用于异步调用回调.当我只调用一次回调时,它工作得很好.但是当我调用回调两次时,它会给出 Segmentation fault (core dumped).使用 gdb 找不到错误.下面是 JS 和 C++ 代码(使用 node-gyp configure build 编译): //main.j ..
发布时间:2021-09-15 20:27:49 C/C++开发

node.js 内部:我怎样才能找出`process.binding('eval')` 的定义位置?

如何找出 node.js 的 C++ 源代码中定义 JavaScript 对象的位置,我可以通过 process.binding('eval') 访问该对象?- 在这种特殊情况下,我已经发现它在 /src/node_script.cc 中,但是:当我刚查看 /src/ 目录概述?我不想为了查找模块而遍历 /src/ 中的所有文件. 在哪里可以找到有关 process.binding()s 内部结 ..
发布时间:2021-09-15 20:27:43 C/C++开发

libuv 和 Node.js 实际上是如何调度计时器的?

在 Node.js 中,libuv 和操作系统实际上是如何调度像 setTimeout 和 setInterval 这样的定时器的?我看到节点进程没有使用 CPU,直到计时器触发.这是否意味着操作系统会调度计时器,并在计时器被触发时唤醒 Node 进程?如果是这样,操作系统如何调度计时器以及硬件究竟如何执行它? 解决方案 定时器回调作为 NodeJS 事件循环的一部分执行.当您调用 set ..
发布时间:2021-09-07 20:17:37 其他开发

libuv中的UV_RUN_NOWAIT模式是如何工作的?

使用 uv_run 函数在 libuv 中运行事件循环时,有一个“mode"参数与以下值一起使用: UV_RUN_DEFAULTUV_RUN_ONCEUV_RUN_NOWAIT 前两个是显而易见的.UV_RUN_DEFAULT 运行事件循环直到没有更多事件,并且 UV_RUN_ONCE 处理循环中的单个事件.但是,UV_RUN_NOWAIT 似乎不是一个单独的模式,而是一个可以与其他两个值之一 ..
发布时间:2021-06-08 18:52:16 其他开发

了解libuv/epoll/非阻塞网络IO

我试图了解 Node.js / libuv 中的非阻塞网络IO如何工作.我已经发现 file IO是使用 libuv 工作线程完成的(因此,在后台线程中).但是,在不同地方都说网络 IO是通过使用 epoll , kqueue 等系统调用以非阻塞方式完成的(取决于在操作系统上). 现在,我想知道这是否意味着实际的IO部分( read())是在主线程上完成 still 并因此阻塞了,即使e.G ..
发布时间:2021-05-16 19:54:19 其他开发

用libwebsockets编译libuv

我试图运行随LWS库安装的“ libwebsockets-test-server”,但由于“ lwsts [31616]:未编译libuv支持”而无法运行。 我检查了是否安装了libuv(1.8.0)。我还在cmake中更改了LIBUV的设置,并重新编译了库。 LWS_USE_LIBUV = 1 如何使用libuv编译项目? 我在Ubuntu 16.0 ..
发布时间:2020-10-11 06:37:48 其他开发

在节点js 8中打印libuv线程池大小

此链接纯粹表明libuv提供了一个线程池,可用于运行用户代码并在循环线程中得到通知.其默认大小为4,但是可以在启动时通过将UV_THREADPOOL_SIZE环境变量设置为任何值来更改它. (绝对最大值为128). 因此,在package.json中,我将scripts字段设置如下(注意:我正在使用Windows 7,Node JS 8.11.3,nodemon,express 4.16), ..
发布时间:2020-07-30 22:50:19 前端开发

.pipe()是否在node.js中执行memcpy?

这是有关系统级优化的概念性查询.通过阅读NodeJS文档,我的理解是管道很容易在流上执行流控制. 背景:我有麦克风流进来,我想避免额外的复制操作以节省整个系统的MIPS.我知道对于音频流,即使引擎盖下有内存复制,也不会花费很多MIPS,但是我还计划扩展以30fps和UHD分辨率在相机帧中进行流传输.以30fps的速度复制UHD分辨率像素数据的多个副本效率极低,因此需要一些建议. 示例代 ..
发布时间:2020-05-28 00:13:26 其他开发

nodejs中的libuv线程如何利用多核cpu

我无法确定node.js中的libuv是使用多核cpus还是仅使用时间切片在单核上运行其所有线程? 由于node.js是单线程的,但libuv有自己的线程池,所以它是否使用多核cpu的所有内核? 解决方案 它确实通过线程池利用多核。例如,在Linux上,底层的pthread将为多个线程使用多个内核。 如果运行以下代码,您会注意到4个(默认线程池大小)内核将挂起当文件系统IO与线程池 ..
发布时间:2019-06-12 13:02:59 前端开发

事件循环,libuv和v8引擎之间的关系

我正在学习Node.js的架构。我有以下问题。 事件循环是libuv还是v8的一部分? 是事件排队事件循环的一部分?是由libuv或v8引擎或事件循环本身生成的事件队列吗? libuv和v8引擎之间的连接是什么? 如果事件循环是单线程,libuv是否会进入图片来创建多个线程来处理文件I / O? 浏览器是否有事件循环机制或只是Node.js吗? 解决方案 事件循环首先是一 ..
发布时间:2019-06-06 04:21:13 前端开发

异步javascript如何在Node.js中解释和执行?

我最近一直在研究Node.js的核心,我对Node平台的内部工作有一些疑问。据我了解,Node.js的工作原理如下: Node有一个用Javascript编写的API,它允许程序员与文件系统和网络之类的东西进行交互。但是,所有这些功能实际上都是由C / C ++代码完成的,也是Node的一部分。事情变得模糊不清。因此,Chrome V8引擎的工作基本上是“编译”(解释?)javascript ..
发布时间:2019-04-24 12:18:52 C/C++开发

关于node.js内部异步I / O机制的困惑

我了解到node.js在内部使用libeio在* nix平台上使用线程池执行异步文件 I / O,对不对? 异步网络 I / O怎么样?它是由libev完成的吗?还有线程池吗? 如果内部有线程池,那么它如何比传统的每线程请求模型更高效?每个I / O请求是一个线程吗? Windows上的机制是什么?我知道它是由IOCP完成的,并且有一个内核级线程池,对吗? 为什么linux没有像Windo ..
发布时间:2018-08-24 17:15:19 服务器开发

Nodejs Addons uv_queue_work分段故障

我想创建一个非常小的nodejs插件示例。 我的c ++代码是这样: void __sleep(uv_work_t * req){ usleep 1000 * 5); // = 5seconds } void after(uv_work_t * handle,int status){ printf(“After\\\ ”); } 处理 foo(con ..
发布时间:2016-10-25 15:04:03 C/C++开发