libevent : 名气最大,应用最广泛,历史悠久的跨平台事件库;libev : 较libevent而言,设计更简练,性能更好,但对Windows支持不够好;libuv : 开发node的过程中需要一个跨平台的事件库,他们首选了libev,但又要支持Windows,故重新封装了一套,*nix下用l...
分类:
其他好文 时间:
2014-09-10 15:32:10
阅读次数:
584
gevent之所以性能好,最主要就得益于对libev的封装,这里就来看看这部分具体的实现。。。
稍微看一下libev的用法就知道,libev将各种事件都定义为了watcher,这里包括了定时,io等等。。
在gevent主要就是对libev的loop以及watcher进行了封装。。这部分采用的是cython来写的。。...
分类:
其他好文 时间:
2014-09-09 16:06:48
阅读次数:
349
本篇将讨论gevent的两架马车-libev和greenlet如何协同工作的。gevent事件驱动底层使用了libev,我们先看看如何单独使用gevent中的事件循环。#coding=utf8
import socket
import gevent
from gevent.core import loop
def f():
s, address = sock.accept()
p...
分类:
其他好文 时间:
2014-09-08 01:04:46
阅读次数:
396
这一小节继续讲解各个观察器(Watcher). 上一小节已经讲解了ev_io(IO可读可写观察器),ev_stat(文件属性变化观察器),ev_signal(信号处理观察器),ev_timer(定时器),ev_periodic(周期任务处理),ev_child(子进程状态变化观察器)。这一小节...
分类:
其他好文 时间:
2014-09-07 02:11:24
阅读次数:
415
构建现代的服务器应用程序需要以某种方法同时接收数百、数千甚至数万个事件,无论它们是内部请求还是网络连接,都要有效地处理它们的操作。
有许多解决方案,但事件驱动也被广泛应用到网络编程中。并大规模部署在高连接数高吞吐量的服务器程序中,如 http 服务器程序、ftp 服务器程序等。相比于传统的网络编程方式,事件驱动能够极大的降低资源占用,增大服务接待能力,并提高网络传输效率。
这些事件驱动模型中, libevent 库和 libev库能够大大提高性能和事件处理能力。在本文中,我们要讨论在...
分类:
其他好文 时间:
2014-09-05 04:29:41
阅读次数:
394
这一小节讲各个观察器(Watcher) 在libev下面watcher相当于EventHandler这么一个概念,通常里面会绑定fd回调函数以及我们需要关注的事件。 然后一旦触发事件之后会触发我们使用的回调函数,回调函数参数通常有reactor,watcher以及触发的事件。这里不打算重复文档...
分类:
其他好文 时间:
2014-09-04 01:24:07
阅读次数:
300
最近对json-rpc比较感兴趣,思想很简单,而且看到了很多不同语言的实现。在github上 hmngomes 的 json-rpc-c (实现的是server端,基于TCP流),短小精悍,提供了很好的框架,代码十分清晰,易于扩展,而且代码容易看懂,很经典。该实现依赖于其它两个库 libev 和 cJSON,值得认真学习。
测试的时候先启动server,而后通过 nc 命令发送相应的j...
分类:
编程语言 时间:
2014-07-08 11:00:00
阅读次数:
419
系统为Linuxdebian2.6.32-5-686。这是裸系统,连xwindows都没有。帐户为root,不是的注意一下权限。这里想说明安装过程及出现的问题,故打印的信息较多,以供出现错误的读者对比。不需要这些信息的读者勿喷。
网上流行的安装方法:shautogen.sh或./configu...
分类:
其他好文 时间:
2014-05-12 10:16:47
阅读次数:
630