做网站商丘,博客网站模板下载,wordpress菜单美化,建筑设计咨询公司要不要资质libevent 编辑Libevent 是一个用C语言编写的、轻量级的开源高性能网络库#xff0c;主要有以下几个亮点#xff1a;事件驱动#xff08; event-driven#xff09;#xff0c;高性能;轻量级#xff0c;专注于网络#xff0c;不如 ACE 那么臃肿庞大#xff1b;源代码相当… libevent 编辑Libevent 是一个用C语言编写的、轻量级的开源高性能网络库主要有以下几个亮点事件驱动 event-driven高性能;轻量级专注于网络不如 ACE 那么臃肿庞大源代码相当精炼、易读跨平台支持 Windows、 Linux、 *BSD 和 Mac Os支持多种 I/O 多路复用技术 epoll、 poll、 dev/poll、 select 和 kqueue 等支持 I/O定时器和信号等事件注册事件优先级。 Libevent 已经被广泛的应用作为底层的网络库比如 memcached、 Vomit、 Nylon、 Netchat等 ASIO Boost.ASIO 是利用当代C的先进方法,跨平台,异步I/O模型的C网络库。已被推荐进入TR2这意味着它有成为C标准库的可能。 muduo muduo 是一个基于非阻塞 IO 和事件驱动的现代 C 网络库原生支持 one loop per thread 这种 IO 模型。muduo 适合开发 Linux 下的面向业务的多线程服务端网络应用程序其中“面向业务的网络编程”的定义. 最近简单读了下muduo的源码本文对其主要实现/结构简单总结下。 muduo的主要源码位于net文件夹下base文件夹是一些基础代码不影响理解网络部分的实现。muduo主要类包括 EventLoopChannelPollerTcpConnectionTcpClientTcpServerConnectorAcceptorEventLoopThreadEventLoopThreadPool 其中Poller及其实现类包装了Poll/EPoll封装了OS针对设备(fd)的操作Channel是设备fd的包装在muduo中主要包装socketTcpConnection抽象一个TCP连接无论是客户端还是服务器只要建立了网络连接就会使用TcpConnectionTcpClient/TcpServer分别抽象TCP客户端和服务器Connector/Acceptor分别包装TCP客户端和服务器的建立连接/接受连接EventLoop是一个主控类是一个事件发生器它驱动Poller产生/发现事件然后将事件派发到Channel处理EventLoopThread是一个带有EventLoop的线程EventLoopThreadPool自然是一个EventLoopThread的资源池维护一堆EventLoopThread。 阅读库源码时可以从库的接口层着手看看关键功能是如何实现的。对于muduo而言可以从TcpServer/TcpClient/EventLoop/TcpConnection这几个类着手。接下来看看主要功能的实现