libevent源码分析(4)--2.1.8--结构体struct event_config
来源:互联网 发布:c语言for循环打印图形 编辑:程序博客网 时间:2024/06/01 07:28
一、event_entry结构体
struct event_config_entry { // 下一个屏蔽的后台方法名 TAILQ_ENTRY(event_config_entry) next; // 屏蔽的后台方法名 const char *avoid_method;};
二、event_config结构体
** Internal structure: describes the configuration we want for an event_base * that we're about to allocate. */// 内部结构体,用于描述对event_base进行配置的配置信息struct event_config { // 屏蔽的后台方法列表 TAILQ_HEAD(event_configq, event_config_entry) entries; // cpu个数,这个仅仅是对event_base的建议,不是强制的 int n_cpus_hint; // 如果不执行以下检查,默认情况下,event_base会按照当前优先级队列的顺序,一直将本优先级 // 队列的事件执行完毕之后才会检查新事件,这样的好处是吞吐量大,但是在低优先级队列比较长时, // 会导致某些高优先级一直在等待执行,无法抢占cpu // event_base在event_loop中两次检查新事件之间执行回调函数的时间间隔 // 需要每次执行完回调函数之后都进行检查 struct timeval max_dispatch_interval; // event_base在event_loop中两次检查新事件之间执行调度回调函数的最大个数 // 需要每次执行完回调函数之后都进行检查 int max_dispatch_callbacks; // 用于启动上面两个检查的开关,如果=0,则每次执行完毕回调函数之后都强制进行检查; // 如果=n,则只有在执行完毕>=n的优先级事件之后才会强制执行上述检查 int limit_callbacks_after_prio; // event_base后台方法需要的特征 // enum event_method_feature { // 边沿触发 // EV_FEATURE_ET = 0x01, // 要求事后台方法在调度很多事件时大约为O(1)操作,select和poll无法提供这种特征, // 这两种方法具有N个事件时,可以提供O(N)操作 // EV_FEATURE_O1 = 0x02, // 后台方法可以处理各种文件描述符,而不仅仅是sockets // EV_FEATURE_FDS = 0x04, /** Require an event method that allows you to use EV_CLOSED to detect * connection close without the necessity of reading all the pending data. * * Methods that do support EV_CLOSED may not be able to provide support on * all kernel versions. **/ // 要求后台方法允许使用EV_CLOSED特征检测链接是否中断,而不需要读取 // 所有未决数据;但是不是所有内核都能提供这种特征 // EV_FEATURE_EARLY_CLOSE = 0x08 // }; enum event_method_feature require_features; // event_base配置的特征值 // 多线程调用是不安全的,单线程非阻塞模式 // EVENT_BASE_FLAG_NOLOCK = 0x01, // 忽略检查EVENT_*等环境变量 // EVENT_BASE_FLAG_IGNORE_ENV = 0x02, // 只用于windows // EVENT_BASE_FLAG_STARTUP_IOCP = 0x04, // 不使用缓存的时间,每次回调都会获取系统时间 // EVENT_BASE_FLAG_NO_CACHE_TIME = 0x08, // 如果使用epoll方法,则使用epoll内部的changelist // EVENT_BASE_FLAG_EPOLL_USE_CHANGELIST = 0x10, // 使用更精确的时间,但是可能性能会降低 // EVENT_BASE_FLAG_PRECISE_TIMER = 0x20 enum event_base_config_flag flags;};
阅读全文
0 0
- libevent源码分析(4)--2.1.8--结构体struct event_config
- libevent源码分析(5)--2.1.8--libevent配置信息对象struct event_config的申请和释放函数分析
- libevent源码分析(2)--2.1.8--结构体 struct event和struct event_callback
- libevent源码分析(3)--2.1.8--结构体struct event_base和struct eventop
- libevent源码分析(6)--2.1.8--创建和释放libevent句柄event_base的相关函数
- libevent源码分析(7)--2.1.8--信号事件处理机制分析
- libevent源码分析(8)--2.1.8--事件申请与释放
- libevent源码分析(1)--2.1.8--标志信息
- libevent源码分析(9)--2.1.8--事件注册和删除
- libevent源码分析(10)--2.1.8--事件激活
- libevent源码分析--代码结构
- libevent源码分析---回顾主要的结构体
- Libevent源码分析之event结构体初识
- Libevent-2.1.8源码分析——event_base(一)
- Libevent-2.1.8源码分析——event_base(二)
- Libevent-2.1.8源码分析——五种数据结构
- Webx3源码分析-容器结构
- Libevent 源码分析(原创)
- (118)移动补丁工具节点
- C#学习笔记:控件的Location属性值的设置与获取
- document
- JUnit注解解析
- TF/05_Nearest_Neighbor_Methods/06 Nearest Neighbors for Image Recognition
- libevent源码分析(4)--2.1.8--结构体struct event_config
- QT编写的数独游戏及一个准确高效生成算法
- 关于JVM虚拟机
- BZOJ2091: [Poi2010]The Minima Game
- lombok 注解
- 数据结构---后序遍历
- NSOJ 我排第几个
- HD6015 Skip the Class
- Spark 简易入门教程(Java的微型Web框架)