libevent是一個基於事件的網絡庫,用於管理定時器事件,網絡IO事件,以及信號事件三種事件類型。libevent是一個
單線程的網絡處理庫。但它可以支持多線程,通過創建多個libevent實體(event_base)來實現,memcached即採用這種
方式來實現多線程。
libevent是一個基於事件的高性能網絡編程庫,對於每個事件,可以指定優先級,高優先級事件將優先處理。
libevent通過IO多路複用函數,將網絡IO事件,定時器事件以及信號事件統一起來,達到一致性處理的目的。主要流程如下:
在epoll_wait返回後,依次檢測信號事件,IO事件,定時器事件,將符合要求的事件激活,放於激活事件隊列中去,
最後,統一從激活事件隊列中取激活事件,進行處理。信號,IO,超時事件統一在IO多路複用函數上,使整個事件循環
清晰明瞭。
恩,這就算開題了吧,接下來,逐一分析libevent的各個實現細節,力求簡單明瞭。