1. 首先是根据陈硕老师的muduo库手册p11的类图,结合自己的学习所得画的一个更详细的流程,使用IO线程池与计算线程池。
(1)计算线程中,task()
调用TcpConnection::send()
向IO线程的EventLoop注册完一个sendInLoop()
任务之后,并不需要关心接下去数据的发送情况。
如果一次发送不完,会自动关注POLLOUT事件,多次调用TcpConnection::handleWrite()
直到全部发送完毕。发送完毕后会取消关注POLLOUT事件,并回调onWriteComplete()
。
(2)执行onMessage()
之前,TcpConnection::handleRead()
已经把收到的数据保存至inputBuffer中。
(3)onMessage()