Node.js中libuv库的运行原理是如何实现跨平台异步IO操作的?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1402个文字,预计阅读时间需要6分钟。
前言:本篇应是以Node.js运行原理的第七篇分享,这篇之后,短时间内不会再分享Node.js的运行原理,会暂停一段时间。PS:不是不再更新,而是会开拓新的领域,最近有在研究RPG Maker MV、区块链、云等。
前言
这应该是Nodejs的运行原理的第7篇分享,这篇过后,短时间内不会再分享Nodejs的运行原理,会停更一段时间,PS:不是不更,而是会开挖新的坑,最近有在研究RPG Maker MV,区块链,云计算,可能会更新一些相关文章,或者相关教学。
回到正题,异步编程的难点在于请求与响应不是按顺序发生的。以http server 为例,异步编程赋予了server 高并发的品质,而且他可以以很小的资源代价,不断地接受和处理请求。但是快速处理请求不表示快速地返回请求=>高并发不等同于快速反馈。
在Nodejs中,libuv则为异步编程的实现提供了可能。libuv为builtin modules 提供了API,这些API用来支撑请求和数据的返回的异步处理方式。
这一篇分享,我们主要讨论libuv的运行原理,从两个角度出发:
1) libuv的架构
2) 案例,从细节的角度看libuv是如何对待不同I/O请求,按照不同的方式来完成异步请求和数据返回的。
Libuv的架构
从左往右可分为两部分,Network I/O的相关请求,另一部分File I/O,DNS Ops和User Code组成。
上图展示了libuv细节的流程,图中代码很简单,包括2个部分:
1. server.listen()是用来创建TCP server时,通常放在最后一步执行的代码。
本文共计1402个文字,预计阅读时间需要6分钟。
前言:本篇应是以Node.js运行原理的第七篇分享,这篇之后,短时间内不会再分享Node.js的运行原理,会暂停一段时间。PS:不是不再更新,而是会开拓新的领域,最近有在研究RPG Maker MV、区块链、云等。
前言
这应该是Nodejs的运行原理的第7篇分享,这篇过后,短时间内不会再分享Nodejs的运行原理,会停更一段时间,PS:不是不更,而是会开挖新的坑,最近有在研究RPG Maker MV,区块链,云计算,可能会更新一些相关文章,或者相关教学。
回到正题,异步编程的难点在于请求与响应不是按顺序发生的。以http server 为例,异步编程赋予了server 高并发的品质,而且他可以以很小的资源代价,不断地接受和处理请求。但是快速处理请求不表示快速地返回请求=>高并发不等同于快速反馈。
在Nodejs中,libuv则为异步编程的实现提供了可能。libuv为builtin modules 提供了API,这些API用来支撑请求和数据的返回的异步处理方式。
这一篇分享,我们主要讨论libuv的运行原理,从两个角度出发:
1) libuv的架构
2) 案例,从细节的角度看libuv是如何对待不同I/O请求,按照不同的方式来完成异步请求和数据返回的。
Libuv的架构
从左往右可分为两部分,Network I/O的相关请求,另一部分File I/O,DNS Ops和User Code组成。
上图展示了libuv细节的流程,图中代码很简单,包括2个部分:
1. server.listen()是用来创建TCP server时,通常放在最后一步执行的代码。

