Event in Action(0).event_base
很多營銷號一上來就介紹歷史,讓人興趣全無。。

留一些坑(目前本人源碼還沒看多少,也基本沒用過。所以以后再說):
1、event_base的線程安全
2、EVENT_BASE_FLAG_NO_CACHE_TIME中提到的timeout callbacks具體指什么
3、

先來看第一個api:
返回一個event base結(jié)構(gòu)體。linux上默認采用epoll。
如果想要更細的設(shè)置,那么需要以下三個api:
event config可以通過這個api:
讓event base具有以下特點:
1、EV_FEATURE_ET——edge trigger觸發(fā)事件
2、EV_FEATURE_FDS——監(jiān)聽不同的描述符(不只是socket)
3、EV_FEATURE_O1——O(1)方法
select和poll滿足2;epoll滿足1、3。require2的時候郵箱選擇poll。當(dāng)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); ,設(shè)置這個flag會讓base->lock為null。
2、EVENT_BASE_FLAG_IGNORE_ENV——初始化時不再檢測運行環(huán)境。這個感覺用處不大。
3、EVENT_BASE_FLAG_STARTUP_IOCP——windows著名的iocp。直接忽略,普通人只學(xué)linux
4、EVENT_BASE_FLAG_NO_CACHE_TIME——設(shè)置后,不在run timoutcallback前檢查時間,改為run完callback再檢查時間??赡芟母郼pu。
5、EVENT_BASE_FLAG_EPOLL_USE_CHANGELIST——使用比epoll更牛逼的后端。目測是新技術(shù),不急,等成熟了再學(xué)
6、EVENT_BASE_FLAG_PRECISE_TIMER——使用效率更低但更精確的timer