libevent学习路线
每个网络编程的初学者在寻找阅读源码的时候,大部分人都会被建议去看libevent。我这里的初学者指的是看过且用过大部分基础网络api。使用阻塞IO实现过简单的
- discard服务器
- echo服务器
- 聊天服务器
- ftp服务器
这个时候可以认为你现在是遇到门槛了,用玄幻小说的话来说,你该渡劫了。我们知道,每当渡劫的时候,都要跳出自己的舒适区,去跨一个不小的门槛。而大部分其实是不愿跨的。而这里我就给大家提供下我的渡劫路线。
学习路线
- 先使用libevent,作为初学者,我个人不建议上来就看源码,除非你功力比较深厚,像我这样。(^.^ )。简单地利用libevent实现一个echo服务器和聊天服务器后。接下来你要去了解几个概念。
- 明白利用函数指针去实现回调函数的思想
- 明白reactor模式,能够用c语言写一个简单的reactor出来。
- 然后我建议去看张亮的《libevent源码深度剖析》,这里的版本比较老,所以记得在github下载的时候别去下最新的,先找第一个大的稳定版本开始看。还有《linux高性能服务器》
- 你要明白libevent是如何将定时器,信号,文件描述符统一为事件的。在《Linux高性能服务器》中有详细介绍
- 我个人认为,你要找准重点,就是明白Reactor中的三大组件是怎么进行状态变换和消息通知的。其它比如锁,Buffer,数据结构的实现不是重点。
- 接下来,你就可以去看官方文档了,按照它的介绍,了解更多libevent的细节。
- 最后一个更加详细的专栏libevent专栏
如果能够看完这些,我认为libevent的精髓已经了解到了,接下来更加推荐的是去看muduo库。然后去实现自己的网络库。我认为这算是指出了一个比较明确的学习路线。