欢迎光临散文网 会员登陆 & 注册

Event in Action(0).event_base

2023-06-04 23:31 作者:米诺斯人  | 我要投稿

很多营销号一上来就介绍历史,让人兴趣全无。。

留一些坑(目前本人源码还没看多少,也基本没用过。所以以后再说):

1、event_base的线程安全

2、EVENT_BASE_FLAG_NO_CACHE_TIME中提到的timeout callbacks具体指什么

3、

先来看第一个api:

返回一个event base结构体。linux上默认采用epoll。

如果想要更细的设置,那么需要以下三个api:

event config可以通过这个api:

让event base具有以下特点:

1、EV_FEATURE_ET——edge trigger触发事件

2、EV_FEATURE_FDS——监听不同的描述符(不只是socket)

3、EV_FEATURE_O1——O(1)方法

select和poll满足2;epoll满足1、3。require2的时候邮箱选择poll。当poll被avoid:

event_config_avoid_method(cfg,"poll")的时候,会选择select。其他时候都是epoll。

有以下flags:

1、EVENT_BASE_FLAG_NOLOCK——放弃给这个base申请一个lock,不再保证线程安全。框架源码的行为是,if(base->lock!=null)lock(base->lock); ,设置这个flag会让base->lock为null。

2、EVENT_BASE_FLAG_IGNORE_ENV——初始化时不再检测运行环境。这个感觉用处不大。

3、EVENT_BASE_FLAG_STARTUP_IOCP——windows著名的iocp。直接忽略,普通人只学linux

4、EVENT_BASE_FLAG_NO_CACHE_TIME——设置后,不在run timoutcallback前检查时间,改为run完callback再检查时间。可能消耗更多cpu。

5、EVENT_BASE_FLAG_EPOLL_USE_CHANGELIST——使用比epoll更牛逼的后端。目测是新技术,不急,等成熟了再学

6、EVENT_BASE_FLAG_PRECISE_TIMER——使用效率更低但更精确的timer

Event in Action(0).event_base的评论 (共 条)

分享到微博请遵守国家法律