学习一下muduo网络库(二)

muduo中Reactor设计模式的实现------eventloop

muduo中的eventloop采用one eventloop per thread设计思想,并明确每个eventloop中注册的回调函数都在eventloop线程中调用

eventloop loop()函数运行的时序图
学习一下muduo网络库(二)_第1张图片
Channel的底层实现存放了用于poll(2)的fd,同时也指定了Channel将作用于的eventloop

eventloop中添加了定时器后的时序图
学习一下muduo网络库(二)_第2张图片

除了定时器功能,muduo还为eventloop添加了一个EventLoop::runInLoop(const Functor & cb)函数,Functor是void()类型的函数回调,该函数保证cb将会在eventloop线程中调用,如果对应线程阻塞在poll(2)系统调用中,该函数会尝试唤醒线程。

eventloop中loop()函数的执行顺序图
学习一下muduo网络库(二)_第3张图片

你可能感兴趣的:(源码学习,muduo,muduo源码学习)