随笔分类 -  浅析libuv源码

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