用了这几天的时间,把muduo这个库算是看完了,看完了之后回过头来发现自己的记录里感觉啥都没写。写一下服务器端启动的流程吧
服务器端main函数里定义一个EvetnLoop,属于主事件循环,主事件循环里有一个轮训器,可以向其中注册自己关心的文件描述符,在每次轮询时可以进行查找,创建TcpServer, TcpServer里有有一个接收器Accepter, 接收区里关注一个socketid,这个soketid是需要在轮训器里订阅的,每次有新的连接进去,会从线程池里取一个事件循环,将把这个新循环的指针方式TcpConnection中区,最终把回调加入这个事件循环,而这个事件循环有自己的轮训器,这个这个新连接的socket会被绑定在不同的轮训器,在不同的线程跑,从而实现了高并发。可以出了多个客户端请求。
c++11关于锁的应用更加简单了,而且陈硕大爷的库有很多关于编译器级别的函数,我们这些菜鸡一时半会是用不到的,理解了大致流程,可以自己试着去实现一个网络库。