码迷,mamicode.com
首页 > 其他好文 > 详细

libuv源码分析前言

时间:2016-12-19 08:50:48      阅读:258      评论:0      收藏:0      [点我收藏+]

标签:驱动   循环   ioc   流行   rip   上层   精简   ocp   life   

Libevent,libev,libuv三者的区别所在?

libevent提供了全套解决方案(事件库,非阻塞IO库,http库,DNS客户端),然而libevent使用全局变量,导致非线程安全。它的watcher结构也过大,把I/O、计时器、信号句柄整合在一起。而且(作者认为)libevent的附加组件如httpdns库都实现不好,且有安全问题。

 

libevlibevent而诞生,对libevent做了改进,避免使用全局变量,拆分watcher等。另外libev去掉了外部库(比如httpdns),只专注于事件驱动服务,所以更精简。

 

libuv 采用了 异步 (asynchronous), 事件驱动 (event-driven)的编程风格, 其主要任务是为开人员提供了一套事件循环和基于I/O(或其他活动)通知的回调函数, libuv 提供了一套核心的工具集, 例如定时器, 非阻塞网络编程的支持, 异步访问文件系统, 子进程以及其他

 

node.js 最初发起于 2009 是一个可以让 JavaScript 代码脱离浏览器的执行环境, libuv 使用了 Google 的 V8 执行引擎 和 Marc Lehmann 的 libev.Node.js 将事件驱动的 I/O 模型与适合该模型的编程语言(Javascript)融合在了一起随着 node.js 的日益流行, node.js 的开发者们也意识到应该让 node.js 在 Windows 平台下也能工作但是 libev 只能在 Unix 环境下运行. Windows 平台上与 kqueue(FreeBSD) 或者 (e)poll(Linux等内核事件通知相应的机制 是 IOCP, libuv 依据不同平台的特性(Unix 平台为 libev, Windows 平台为 IOCP) 给上层应用提供了统一基于 libev API 的抽象Node.js 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。

 

 技术分享

 

 后续会对libuv源码进行深入理解分析,到时会整出来分享给大家!

 

http://www.cnblogs.com/Lifehacker/p/whats_the_difference_between_libevent_and_libev_chinese.html

 

 

 

 

 

libuv源码分析前言

标签:驱动   循环   ioc   流行   rip   上层   精简   ocp   life   

原文地址:http://www.cnblogs.com/chaser24/p/6196109.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!