随笔分类 - 浅析libuv源码
摘要:这篇应该能结,简图如下。 上一篇讲到了uv__work_submit方法,接着写了。 从post开始。 wq就是上一篇讲的线程都会用到的那个队列,这里负责插入任务,worker中取出任务。 没想到post到这里没了,这点东西并到上一篇就好了。以后写这种系列博客还是先规划一下,不能边看源码边写…… 函
阅读全文
摘要:好像博客有观众,那每一篇都画个图吧! 本节简图如下。 上一篇其实啥也没讲,不过node本身就是这么复杂,走流程就要走全套。就像曾经看webpack源码,读了300行代码最后就为了取package.json里面的main属性,导致我直接弃坑了,垃圾源码看完对脑子没一点好处。回头看了我之前那篇博客,同步
阅读全文
摘要:上一篇讲了轮询的边角料,这篇进入正题。(竟然真有人看我博客,上两个图给你们整理下思路) 这是轮询总流程图。 下图为本节内容简图。 Poll for I/O The loop blocks for I/O. At this point the loop will block for I/O for t
阅读全文
摘要:好久没写东西了,过了一段咸鱼生活,无意中想起了脉脉上面一句话: 始终保持自己的竞争力。所以,继续开写! 一般的JavaScript源码看的已经没啥意思了,我也不会写什么xx入门新手教程,最终决定还是啃原来的硬骨头,从外层libuv => node => v8一步步实现原有的目标吧。 libuv核心还
阅读全文
摘要:在Timer模块中有提到,libuv控制着延迟事件的触发,那么必须想办法精确控制时间。 如果是JS,获取当前时间可以直接通过Date.now()得到一个时间戳,然后将两段时间戳相减得到时间差。一般情况下当然没有问题,但是这个方法并不保险,因为本地计算机时间可以修改。 libuv显然不会用这么愚蠢的办
阅读全文
摘要:面试的间隙回头复习了一下node,感觉node就像一个胶带,把V8和libuv粘在了一起。 V8毫无疑问,负责解析执行JavaScript,相当于语言层面的桥梁;而libuv则是负责操作系统底层功能的封装,例如基于IOCP的event loop、file system、non-blockiong n
阅读全文

浙公网安备 33010602011771号