libev源码解析
文章平均质量分 84
breaksoftware
这个作者很懒,什么都没留下…
展开
-
libev源码解析——定时器监视器和组织形式
我们先看下定时器监视器的数据结构。(转载请指明出于breaksoftware的csdn博客)/* invoked after a specific time, repeatable (based on monotonic clock) *//* revent EV_TIMEOUT */typedef struct ev_timer{ EV_WATCHER_TIME ...原创 2017-08-07 16:07:21 · 1912 阅读 · 2 评论 -
libev源码解析——定时器原理
本文将回答《libev源码解析——I/O模型》中抛出的两个问题。(转载请指明出于breaksoftware的csdn博客) 对于问题1:为什么backend_poll函数需要指定超时?我们让其一直等待到有事件发生不是更好么? 答案是“必须要指定超时”。为什么呢?在《libev源码解析——总览》中,我们抛出过一个问题:定时器和事件是如何关联的?因为...原创 2017-08-07 16:07:05 · 3833 阅读 · 1 评论 -
libev源码解析——I/O模型
在《libev源码解析——总览》一文中,我们介绍过,libev是一个基于事件的循环库。本文将介绍其和事件及循环之间的关系。(转载请指明出于breaksoftware的csdn博客) 目前ibev支持如下IO事件模型:select模型。对应文件是ev_select.c。 poll模型。对应文件是ev_poll.c。 epoll模型。对应的文件是ev_epol...原创 2017-08-07 16:06:40 · 2474 阅读 · 1 评论 -
libev源码解析——调度策略
在《libev源码解析——监视器(watcher)结构和组织形式》中介绍过,监视器分为[2,-2]区间5个等级的优先级。等级为2的监视器最高优,然后依次递减。不区分监视器类型和关联的文件描述符的值,权限高的要优先于权限低的执行。但是ANFD结构中的监视器链表无法满足高等级优先执行的特性。那么libev是如何解决这个问题的呢?(转载请指明出于breaksoftware的csdn博客)...原创 2017-08-07 16:06:16 · 2477 阅读 · 3 评论 -
libev源码解析——监视器(watcher)结构和组织形式
在《libev源码解析——总览》中,我们介绍了libev的一些重要变量在不同编译参数下的定义位置。由于这些变量在多线程下没有同步问题,所以我们将问题简化,所提到的变量都是线程内部独有的,不用考虑任何多线程问题。(转载请指明出于breaksoftware的csdn博客) 之前提到过,libev支持多种功能,比如文件状态监控、定时器等。这些功能都是有其相对应的一个“监...原创 2017-08-07 16:05:55 · 2605 阅读 · 1 评论 -
libev源码解析——总览
libev是个非常优秀的基于事件的循环库,很多开源软件,比如nodejs就是使用其实现基础功能。本系列将对该库进行源码分析。(转载请指明出于breaksoftware的csdn博客) 不知道是被墙了还是网站不再维护,它的官网(http://libev.schmorp.de/)在国内已经没法访问了。但是我们仍然可以从github上下载其源码(https://gith...原创 2017-08-07 16:05:24 · 9546 阅读 · 2 评论 -
使用libev监视文件夹下文件(夹)属性变动的方案和实现
在《libev源码解析》系列中,我们分析了libev的基本原理。本文我们介绍一套使用libev封装的文件(夹)变动监视方案和实现。(转载请指明出于breaksoftware的csdn博客) 我们先看个最简单方案,下面的代码会监视/home/work下文件(夹)的新增、删除等操作。void call_back(ev::stat &w, int reve...原创 2019-02-05 21:15:56 · 1468 阅读 · 0 评论