golang默认定时器是通过time模块实现的,不管是golang,libev,libevent的定时器都是通过最小堆实现的,通过最小堆实现的定时器加入定时器时间复杂度为O(lgn),在需要大量定时器时效率较低,所以Linux提供了基于时间轮的实现,我们本次提供的定时器实现就是标准的Linux时间轮实现方式。当然,我是把Skynet(https://github.com/cloudwu/skyne...
分类:
其他好文 时间:
2015-05-31 20:13:33
阅读次数:
240
用./configure、make、make install安装完libev后,写一个简单程序server.c,编译,gcc server.c -o server lev。
产生如下错误:error while loading shared libraries: libev.so.4: cannot open shared object file: No such file or directo...
分类:
其他好文 时间:
2015-05-28 09:45:31
阅读次数:
306
这一节分析Libev的定时器部分。对定时器的使用主要有两个函数:ev_timer_init (&timeout_watcher, timeout_cb, 5.5, 0.);ev_timer_start (loop, &timeout_watcher);和ev_io类型的watcher类似,timeo...
分类:
其他好文 时间:
2015-05-19 20:51:19
阅读次数:
805
设置完需要监听的事件之后,就开始event loop了。在Libev中,该工作由ev_run函数完成。它的大致流程如下:intev_run (EV_P_ int flags){ do { /* 执行EV_FORK类型事件 */ /* 执行EV_PREPARE类型事件 */...
分类:
其他好文 时间:
2015-05-14 20:30:13
阅读次数:
403
这一节根据官方文档给出的简单示例,深入代码内部,了解其实现机制。示例代码如下:intmain (void){ struct ev_loop *loop = EV_DEFAULT; ev_io_init (&stdin_watcher, stdin_cb, /*STDIN_FILENO*/...
分类:
其他好文 时间:
2015-05-11 12:24:45
阅读次数:
146
移植libev事件库到Android中,因为libev库是使用C语言写的,所以在Android项目中使用此库的方法是把libev编译成.so文件,在Android中使用jni方式来调用libev的.so文件。...
分类:
移动开发 时间:
2015-04-21 11:16:20
阅读次数:
1065
和Libevent相似,Libev是一个高性事件驱动框架,据说性能比Libevent要高,bug比Libevent要少。Libev只是一个事件驱动框架,不是网络库,因为它的内部并没有任何socket编程代码。支持的事件驱动机制包括:selectpollepollkqueueSolaris-speci...
分类:
其他好文 时间:
2015-04-11 22:18:29
阅读次数:
218
1. 这是libevent的官网 http://libevent.org/ 2. 下面是两个简单的使用介绍 http://www.ibm.com/developerworks/cn/aix/library/au-libev/ http://www.cnblogs.com/cnspace/archive/2011/07/19/2110891.html 他们...
分类:
其他好文 时间:
2015-02-04 11:16:44
阅读次数:
150