当前位置: 首页 > news >正文 做网站带阿里云服务器多少钱黄山网站网站建设 news 2025/10/27 8:38:31 做网站带阿里云服务器多少钱,黄山网站网站建设,域名seo站长工具,网站分享到朋友圈代码libuv 在Node.js中#xff0c;libuv是作为其事件循环和异步I/O的核心组件而存在的。Node.js是构建在libuv之上的#xff0c;它利用libuv来处理底层的异步操作#xff0c;如文件I/O、网络通信和定时器等。 libuv在Node.js中扮演了以下几个重要角色#xff1a; 事件循环libuv是作为其事件循环和异步I/O的核心组件而存在的。Node.js是构建在libuv之上的它利用libuv来处理底层的异步操作如文件I/O、网络通信和定时器等。 libuv在Node.js中扮演了以下几个重要角色 事件循环Event Looplibuv实现了Node.js的事件循环机制负责管理事件的调度和执行。事件循环是Node.js的核心机制它使得Node.js能够以非阻塞的方式处理大量并发操作。异步I/O操作libuv提供了一组异步I/O的API用于处理文件、网络和其他I/O操作。这些API能够在后台进行操作而无需阻塞主线程从而实现高效的并发处理。网络通信libuv封装了底层的网络通信功能包括TCP和UDP套接字的创建、绑定、监听和连接等操作。它提供了高级的网络接口方便开发者构建基于网络的应用程序。定时器和事件触发libuv提供了定时器相关的API可以创建和管理定时器以及在指定时间间隔后触发相应的回调函数。这对于处理定时任务和调度是非常有用的。跨平台支持libuv实现了对不同操作系统的抽象封装使得Node.js能够在不同的平台上运行并保持一致的行为和性能。 事件循环 nodejs官网事件循环描述 在Nodejs中事件循环分为6个阶段。每个阶段都有一个任务队列。当Node启动时会创建一个事件循环线程并依次按照下图所示顺序进入每个阶段执行每个阶段的回调 Nodejs事件循环可以划分为两种微任务和宏任务 宏任务 timers 执行setTimeout和setInterval的回调pending callbacks 执行推迟的回调如IO计时器idleprepare 空闲状态 nodejs内部使用无需关心poll 执行与I/O相关的回调除了关闭回调、计时器调度的回调和setImmediate之外几乎所有回调都执行 例如 fs的回调 http回调check 执行setImmediate的回调close callback 执行例如socket.on(close, ...) 关闭的回调 微任务 process.nextTickpromise 注意事项 不准确计时器 我们根据上方顺序编写一个案例 输出3 1 2并不是 1 2 3 官网解释过这个原因是因为在事件循环的每个循环迭代中libuv会调用uv__update_time函数来更新当前的时间戳。这个时间戳通常用于计算定时器的超时时间和检查事件的发生时间而 setImmediate则是把回调函数直接插入队列所以执行效率比较高。所以就会造成顺序不稳定的一个原因 剖析源码 libuv/src/unix/core.c int uv_run(uv_loop_t* loop, uv_run_mode mode) {int timeout;int r;int can_sleep;r uv__loop_alive(loop); //检查事件循环是否活跃if (!r) //如果事件循环不活跃直接返回uv__update_time(loop); //调用这个函数更新时间戳去检查计时器 超时时间 耗时/* Maintain backwards compatibility by processing timers before entering the* while loop for UV_RUN_DEFAULT. Otherwise timers only need to be executed* once, which should be done after polling in order to maintain proper* execution order of the conceptual event loop. */if (mode UV_RUN_DEFAULT r ! 0 loop-stop_flag 0) {uv__update_time(loop); //更新时间uv__run_timers(loop); //执行定时器}while (r ! 0 loop-stop_flag 0) {can_sleep uv__queue_empty(loop-pending_queue) uv__queue_empty(loop-idle_handles);uv__run_pending(loop); //执行事件队列中的事件uv__run_idle(loop); //执行空闲队列中的事件uv__run_prepare(loop); //执行预备队列中的事件timeout 0;if ((mode UV_RUN_ONCE can_sleep) || mode UV_RUN_DEFAULT)timeout uv__backend_timeout(loop);uv__metrics_inc_loop_count(loop);uv__io_poll(loop, timeout); //执行事件循环/* Process immediate callbacks (e.g. write_cb) a small fixed number of* times to avoid loop starvation.*/for (r 0; r 8 !uv__queue_empty(loop-pending_queue); r)uv__run_pending(loop);/* Run one final update on the provider_idle_time in case uv__io_poll* returned because the timeout expired, but no events were received. This* call will be ignored if the provider_entry_time was either never set (if* the timeout 0) or was already updated b/c an event was received.*/uv__metrics_update_idle_time(loop); //更新空闲时间uv__run_check(loop); //执行检查队列中的事件 setImmediateuv__run_closing_handles(loop); //执行关闭队列中的事件uv__update_time(loop); //更新时间uv__run_timers(loop); //执行定时器r uv__loop_alive(loop);if (mode UV_RUN_ONCE || mode UV_RUN_NOWAIT)break;} libuv/src/unix/internal.c uv__update_time函数实现 UV_UNUSED(static void uv__update_time(uv_loop_t* loop)) {/* Use a fast time source if available. We only need millisecond precision.*/// 这个函数通过调用 gethrtime 获取系统当前时间精度非常高单位是纳秒ns// 1 纳秒等于十亿分之一秒。除 1000000 后的时间单位为 毫秒msloop-time uv__hrtime(UV_CLOCK_FAST) / 1000000; }注意事项 微任务 在nodejs不同版本微任务执行策略不同 低版本 nextTick 优先于 Promise nodejs V10 测试 nodejs V20测试 文章转载自: http://www.morning.yghlr.cn.gov.cn.yghlr.cn http://www.morning.mmjqk.cn.gov.cn.mmjqk.cn http://www.morning.zqdzg.cn.gov.cn.zqdzg.cn http://www.morning.lxbml.cn.gov.cn.lxbml.cn http://www.morning.wqfzx.cn.gov.cn.wqfzx.cn http://www.morning.kyzja.com.gov.cn.kyzja.com http://www.morning.ghgck.cn.gov.cn.ghgck.cn http://www.morning.sxwfx.cn.gov.cn.sxwfx.cn http://www.morning.webpapua.com.gov.cn.webpapua.com http://www.morning.nhlyl.cn.gov.cn.nhlyl.cn http://www.morning.zfgh.cn.gov.cn.zfgh.cn http://www.morning.ljllt.cn.gov.cn.ljllt.cn http://www.morning.ljllt.cn.gov.cn.ljllt.cn http://www.morning.nwgkk.cn.gov.cn.nwgkk.cn http://www.morning.pggkr.cn.gov.cn.pggkr.cn http://www.morning.hmnhp.cn.gov.cn.hmnhp.cn http://www.morning.csnch.cn.gov.cn.csnch.cn http://www.morning.zlzpz.cn.gov.cn.zlzpz.cn http://www.morning.sfwcx.cn.gov.cn.sfwcx.cn http://www.morning.mhnd.cn.gov.cn.mhnd.cn http://www.morning.qpnb.cn.gov.cn.qpnb.cn http://www.morning.rbkdg.cn.gov.cn.rbkdg.cn http://www.morning.nlryq.cn.gov.cn.nlryq.cn http://www.morning.sbjbs.cn.gov.cn.sbjbs.cn http://www.morning.jqhrk.cn.gov.cn.jqhrk.cn http://www.morning.rdkt.cn.gov.cn.rdkt.cn http://www.morning.mfmx.cn.gov.cn.mfmx.cn http://www.morning.fdxhk.cn.gov.cn.fdxhk.cn http://www.morning.kfqzd.cn.gov.cn.kfqzd.cn http://www.morning.dkqr.cn.gov.cn.dkqr.cn http://www.morning.pqypt.cn.gov.cn.pqypt.cn http://www.morning.krswn.cn.gov.cn.krswn.cn http://www.morning.jbmbj.cn.gov.cn.jbmbj.cn http://www.morning.qfcnp.cn.gov.cn.qfcnp.cn http://www.morning.qnsmk.cn.gov.cn.qnsmk.cn http://www.morning.ghkgl.cn.gov.cn.ghkgl.cn http://www.morning.ttkns.cn.gov.cn.ttkns.cn http://www.morning.rqnml.cn.gov.cn.rqnml.cn http://www.morning.wdxr.cn.gov.cn.wdxr.cn http://www.morning.wsxly.cn.gov.cn.wsxly.cn http://www.morning.pqkrh.cn.gov.cn.pqkrh.cn http://www.morning.cbnxq.cn.gov.cn.cbnxq.cn http://www.morning.gtqx.cn.gov.cn.gtqx.cn http://www.morning.dqkcn.cn.gov.cn.dqkcn.cn http://www.morning.ffmx.cn.gov.cn.ffmx.cn http://www.morning.gyrdn.cn.gov.cn.gyrdn.cn http://www.morning.lgtzd.cn.gov.cn.lgtzd.cn http://www.morning.fysdt.cn.gov.cn.fysdt.cn http://www.morning.rjbb.cn.gov.cn.rjbb.cn http://www.morning.qjzgj.cn.gov.cn.qjzgj.cn http://www.morning.lwygd.cn.gov.cn.lwygd.cn http://www.morning.ghwdm.cn.gov.cn.ghwdm.cn http://www.morning.drggr.cn.gov.cn.drggr.cn http://www.morning.wzknt.cn.gov.cn.wzknt.cn http://www.morning.c7627.cn.gov.cn.c7627.cn http://www.morning.wptrm.cn.gov.cn.wptrm.cn http://www.morning.grbgn.cn.gov.cn.grbgn.cn http://www.morning.xflwq.cn.gov.cn.xflwq.cn http://www.morning.llyqm.cn.gov.cn.llyqm.cn http://www.morning.rfzbm.cn.gov.cn.rfzbm.cn http://www.morning.pghry.cn.gov.cn.pghry.cn http://www.morning.nydtt.cn.gov.cn.nydtt.cn http://www.morning.tklqs.cn.gov.cn.tklqs.cn http://www.morning.rnngz.cn.gov.cn.rnngz.cn http://www.morning.ygztf.cn.gov.cn.ygztf.cn http://www.morning.fzqfb.cn.gov.cn.fzqfb.cn http://www.morning.qjldz.cn.gov.cn.qjldz.cn http://www.morning.lyhrg.cn.gov.cn.lyhrg.cn http://www.morning.rjcqb.cn.gov.cn.rjcqb.cn http://www.morning.kxxld.cn.gov.cn.kxxld.cn http://www.morning.xdxpq.cn.gov.cn.xdxpq.cn http://www.morning.tkchm.cn.gov.cn.tkchm.cn http://www.morning.qlsbz.cn.gov.cn.qlsbz.cn http://www.morning.smjyk.cn.gov.cn.smjyk.cn http://www.morning.pcgrq.cn.gov.cn.pcgrq.cn http://www.morning.rqkck.cn.gov.cn.rqkck.cn http://www.morning.qxltp.cn.gov.cn.qxltp.cn http://www.morning.yrxcn.cn.gov.cn.yrxcn.cn http://www.morning.rddlz.cn.gov.cn.rddlz.cn http://www.morning.qpmwb.cn.gov.cn.qpmwb.cn 查看全文 http://www.tj-hxxt.cn/news/253371.html 相关文章: jsp网站架设腾冲做兼职的网站 在百度做网站怎么做彩票网站为啥链接做两次跳转 免费的游戏网站建设网站怎么做3d商品浏览 网站更换域名seo怎么建立一个平台 制作网站登录东营会计信息网官网报名 做海报的网站类似于创客贴江苏建设电子信息网站 做图文链接网站wordpress企业建站教程 百度 下载 公司网站改版方案仿淘宝网站制作 如何建设网站的外接 以及在增加外接的时应当注意什么门户网站建设和内容保障工作 泰州建站程序wordpress添加作者 部门网站建设需求确认表源码网站建设 小松建设官方网站网站建设子栏目怎么弄 做印刷广告的图片在哪个网站找网店网站怎么做 番禺建设网站专家国际传来10个最新消息 周口城乡建设网站百度seo网站 新手学做网站电子版关键词林俊杰百度云 vs做的网站如何wordpress魔客 广州哪里有学做网站的网站建设技术支持祥云平台 导购类网站怎么做成品源码网站 wordpress 图片不居中企业网站建设 优化 投资公司网站建设方案.net电子商务网站开发 什么网站可以做装修效果图的什么软件可以做dj视频网站 德州网站建设 绮畅aso应用商店优化原因 开发网站的财务分析网站开发如何避开法律 购物网站html模板江苏省建设主管部门网站 域名网站建设方案书模板公司网站谁负责做 柳州网站建设数公式大全网页无法上传wordpress 深圳网站建设799元起全包域名信息系统的网站开发答辩问题 南山-网站建设信科网络网页制作简单作业 义乌做公司网站wordpress 没有保存