muduo网络库源码解析 一
来源:互联网 发布:淘宝刷到单流程图 编辑:程序博客网 时间:2024/05/16 03:21
在谈muduo之前,我们来探讨一下常用的网络编程模型,从线程的角度来看,分别有单线程服务器编程模型和多线程服务器编程模型。
1、单线程服务器编程模型常用的是Reactor,即non-blocking IO + IO multiplexing,比较著名的有lighttpd,libevent等,采用这种模型的程序基本结构为一个事件循环,以事件驱动和事件回调方式实现业务逻辑.
2、多线程服务器的常用编程模型
(1)每个请求创建一个线程,使用阻塞式IO操作
(2)使用线程池,同样使用阻塞式IO,这是对第一种的改进,提高性能
(3)使用non-blocking IO + IO multiplexing
第三种模型。在这种模型下,程序的每个IO线程有一个event loop,用于处理读写和定时事件,这样的好处是
(1)线程数目基本固定,可以采用线程池的方式
(2)方便在线程间调配负载
(3)IO事件发生的线程是固定的,同一个TCP连接不必考虑事件并发
总的来说,muduo推荐使用one event loop per thread + thread pool,其中event loop用作IO multiplexing,用来配合非阻塞IO,thread pool用来计算。
陈硕认为,TCP网络编程最本质的是处理三个半事件:
(1)连接的建立
(2)连接断开 包括主动断开和被动断开
(3)消息到达,文件描述符可读。这是最为重要的一个事件,对其处理方式决定了网络编程的风格(阻塞还是非阻塞,如何处理分包,应用层缓冲如何设计)
(3.5)消息发送完毕 对于低流量的服务,可以不用关心这个事件。另外这里的发送完毕指的是将数据写入操作系统的缓冲区,并不代表对方已经收到
- muduo网络库源码解析 一
- muduo网络库源码解析 二
- muduo网络库源码解析 三
- muduo网络库源码解析 四
- muduo网络库源码解析 五
- muduo网络库源码解析 六
- muduo网络库源码解析 七
- muduo网络库源码分析-定时器
- Muduo网络库源码分析(一) EventLoop事件循环(Poller和Channel)
- Muduo网络库源码分析(一) EventLoop事件循环(Poller和Channel)
- muduo源码解析之TcpConnection
- muduo源码解析之EventLoopThread
- Muduo之Channel源码解析
- muduo网络库之net库源码分析(1)
- muduo库源码解析:单例模式singleton
- muduo网络库源码学习————互斥锁
- Muduo 网络库源码分析 之 关键技术点总结
- Muduo 网络库源码分析 之 关键技术点总结
- 从数据库中读取信息时抛出异常java.sql.SQLException: Parameter index out of range (1 > number of parameter
- 绘图
- tomcat基础简介与示例
- 树
- python_文件的读写
- muduo网络库源码解析 一
- 2017暑假实习
- 欢迎使用CSDN-markdown编辑器
- 用caffe训练自己的数据集时出错:type “caffe.ImageDataParameter” has no field named “backend”
- C++实现CString和string的互相转换
- 记录一下zkw线段树
- mysql生成1千万条有效测试数据
- F1V3.0-图形-前端如何快速搭建一个地图相关的应用
- Java动态代理机制详解(JDK 和CGLIB)