- 博客(9)
- 资源 (1)
- 收藏
- 关注
原创 Libev源码分析05:Libev中的绝对时间定时器
Libev中的超时监视器ev_periodic,是绝对时间定时器,不同于ev_timer,它是基于日历时间的。比如如果指定一个ev_periodic在10秒之后触发(ev_now() + 10),然后将系统时间调整为去年的一月一号,则该定时器会在一年后才触发超时事件。(ev_timer依然会在10秒之后触发) 一:数据结构 超时监视器ev_ periodic结构:t
2015-10-31 11:30:38 3012
原创 Python深入:setuptools简介
Setuptools是Python Distutils的加强版,使开发者构建和发布Python包更加容易,特别是当包依赖于其他包时。用setuptools构建和发布的包与用Distutils发布的包是类似的。包的使用者无需安装setuptools就可以使用该包。如果用户是从源码包开始构建,并且没有安装过setuptools的话,则只要在你的setup脚本中包含一个bootstrap模块(ez_se
2015-10-30 23:27:13 12052
原创 Libev源码分析04:Libev中的相对时间定时器
Libev中的超时监视器ev_timer,就是简单的相对时间定时器,它会在给定的时间点触发超时事件,还可以在固定的时间间隔之后再次触发超时事件。 所谓的相对时间,指的是如果你注册了一个1小时的超时事件,然后调整系统时间到了去年的一月份,该超时事件依然会在1个小时之后触发。 一:数据结构1:超时监视器ev_timer结构:typedef struct ev_tim
2015-10-25 11:05:21 4346
原创 Libev源码分析02:Libev中的IO监视器
一:代码流程 在Libev中,启动一个IO监视器,等待该监视器上的事件触发,然后调用该监视器的回调函数。整个的流程是这样的: 首先调用ev_default_loop初始化struct ev_loop结构; 然后调用ev_io_init初始化监视器中的属性,该宏主要就是调用ev_init和ev_io_set; 然后调用ev_i
2015-10-25 10:27:52 2772
原创 Python深入:Distutils安装包
一:简介 尽管Python标准库已经支持很多的功能,但是有时还是会需要以第三方模块的形式添加新的功能到Python中。 在最简单的场景中,是你要安装的模块,已经有了针对你的平台的安装版本,因此只需要像安装其他软件一样安装他们即可。比如针对Windows用户的安装程序,针对基于RPM的Linux用户的RPM包等等。这种情况,只需要将该安装包下载下来,直接安装即
2015-10-23 21:04:57 13511
原创 Python深入:修改Python搜索路径
当Python执行import语句时,它会在一些路径中搜索Python模块和扩展模块。可以通过sys.path查看这些路径,比如:>>> import sys>>> sys.path['', '/usr/lib/python2.7/site-packages/demo_nova_hooks-5-py2.7.egg', '/usr/lib64/python27.zip', '/usr/lib
2015-10-23 20:44:40 24594
原创 Python深入:Distutils发布Python模块
Distutils可以用来在Python环境中构建和安装额外的模块。新的模块可以是纯Python的,也可以是用C/C++写的扩展模块,或者可以是Python包,包中包含了由C和Python编写的模块。 一:Distutils简介1.1概念和术语 对于模块开发者以及需要安装模块的使用者来说,Distutils的使用都很简单,作为一个开发者,除了编写源码之外,还需要:
2015-10-19 22:30:52 27125 5
原创 Libev源码分析03:Libev使用堆管理定时器
Libev中在管理定时器时,使用了堆这种结构,而且除了常见的最小2叉堆之外,它还实现了更高效的4叉堆。 之所以要实现4叉堆,是因为普通2叉堆的缓存效率较低,所谓缓存效率低,也就是说对CPU缓存的利用率比较低,说白了,就是违背了局部性原理。这是因为在2叉堆中,对元素的操作通常在N和N/2之间进行,所以对于含有大量元素的堆来说,两个操作数之间间隔比较远,对CPU缓存利用不太
2015-10-17 13:15:53 1821
原创 Libev源码分析10:libev中poll的用例
在Libev中,使用poll作为backend时,涉及到下面几种数据结构:int *pollidxs;int pollidxmax;struct pollfd *polls;int pollmax;int pollcnt; polls就是struct pollfd结构的数组,pollmax是该数组的实际大小,pollcnt表示该数组中,有效结构的个数。也就是监控的
2015-10-11 13:37:50 927
柔性数组成员
2018-09-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人