Muduo网络库
文章平均质量分 94
学习C++Muduo网络库
硕~
我是一只大菜坤。
展开
-
C++Muduo网络库:简介及使用
Muduo网络库:底层实质上为Linux的epoll + pthread线程池,且依赖boost库。 muduo的网络设计核心为一个线程一个事件循环,有一个main Reactor负载accept连接,然后把连接分发到某个sub Reactor(采用轮询的方式来选择sub Reactor),该连接的所用操作都在那个sub Reactor所处的线程中完成。多个连接可能被分派到多个线程中,以充分利用CPU,Reactor poll的大小是固定的,根据CPU的数目确定。如果有过多的耗费CPU I/O的计算任务,可原创 2023-02-07 17:53:16 · 8215 阅读 · 0 评论 -
C++Muduo网络库:二、高性能网络服务器基础
在这个多核时代,服务端网络编程如何选择线程模型呢? 赞同libev作者的观点:one loop perthread is usually a good model(一个线程有一个事件循环是一个好的事件模型),这样多线程服务端编程的问题就转换为如何设计一个高效且易于使用的event loop,然后每个线程run一个event loop就行了(当然线程间的同步、互斥少不了,还有其它的耗时事件需要起另外的线程来做)。原创 2023-02-04 13:03:17 · 1669 阅读 · 1 评论 -
C++Muduo网络库:一、Linux五种I/O模型基础
什么是阻塞、非阻塞、同步、异步:阻塞、非阻塞、同步、异步都是在描述I/O操作的一些状态,一个典型的I/O包含两个状态,数据准备和数据读写。例如我们使用recv()接收数据时,传入sockfd,buf,buf大小,当sockfd工作在阻塞模式下,没有接收数据时调用recv()时会阻塞当前线程;当sockfd工作在非阻塞模式下,sockfd会立即返回,依据返回值来判断非阻塞状态。原创 2023-02-03 12:01:22 · 236 阅读 · 0 评论