1、单线程/阻塞/同步模型
适用范围:单一连接
缺点:多连接时相互影响,一个阻塞,别的也得不到响应
2、多进程/阻塞/同步模型
适用范围:连接数较少,且使用的资源较多,比如文件操作
缺点:系统进程数有上限,不适用大量并发连接,且进程间切换开销较大
3、多线程/阻塞/同步模型
适用范围:连接数较少,且使用系统资源不多,可多个线程共享
缺点:系统线程数有上限,不适用大量并发连接,且线程间的需要保护
4、单线程/非阻塞/同步模型
特征:强行逐个连接轮询处理,没有探测
适用范围:连接数较少
缺点:需要处理数据的拼接,且凭空占用资源,CPU高
5、select事件驱动模型(单线程/阻塞/同步模型/先探测后处理/挂起式阻塞)
特征:事件驱动,先集中探测事件,再对有事件的连接逐一响应
适用范围:连接数中
缺点:探测效率不高,且探测和处理处于同一线程,处理时间较长时容易影响探测;
6、平台相关的驱事件驱动(双线程/阻塞/异步模型/先探测后处理/挂起式阻塞/探测和响应线程分离)
特征:使用特殊平台自身的接口,linux为poll、epoll,BSD为kqueue、solaris为/dev/poll、windows为iocp;
适用范围:大量并发连接
优点:使用消息队列或信号等方式将事件探测和响应分离在不同线程,从而确保事件探测不会被响应影响;
探测和响应的线程都使用了挂起机制,从而有效防止了线程空转,只占用很少的资源;
缺点:难于跨平台
7、开源跨平台事件驱动模型(双线程/阻塞/异步模型/先探测后处理/挂起式阻塞/探测和响应线程分离)
适用范围:大量并发连接
优点:跨平台
缺点:需要第三方开源库来移植和封装平台
开源例子:libev、libevent、ACE、asio
8、事件驱动模型的抽象
最大限度地利用网络本身的并发能力;
本地资源不能成为网络并发瓶径;
多个连接之间不能相互阻塞;
事件响应不能阻塞事件探测;
线程无任务时不能空转;
9、网络I/O术语
单线程/多线程/多进程
阻塞/挂起式阻塞/超时阻塞/非阻塞/空转/轮询
同步/异步/消息队列/信号
先探测/后响应/集中探测/线程分离
并发连接数
开源/跨平台
高效并发服务器模型
原创
©著作权归作者所有:来自51CTO博客作者magic_180的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:vivi开发笔记
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
并发服务器
实现并发服务器
客户端 套接字 子进程 -
服务器并发
1. 单线程 / 进程在 TCP 通信过程中,服务器端启动之后可以同时和多个客户端建立连接,并进行网络通ude <string.h>#include <arp
udp tcp/ip 客户端 子进程 父进程 -
IO 多路复用之epoll(高效并发服务器)
epoll 是在 2.6 内核中提出的,是之前的select和 poll的增强版本。相对于 select和 poll来说,epoll更加灵活,没有描述符
epoll 高并发服务器 文件描述符 #include 客户端 -
IO 多路复用之select(高效并发服务器)
一、I/O 多路复用概述 I/O 多路复用技术是为了解决进程或线程阻塞到某个 I/O 系统调用而出现的技术,使进程不阻但s...
select 高并发服务器 文件描述符 描述符 #include -
IO 多路复用之poll(高效并发服务器)
poll() 的机制与 select() 类似,与 select() 在本质上没有多大差别,管理多个描述符也是进行轮询,根据描述符的状态进行
poll 高并发服务器 #include 文件描述符 客户端 -
LinuxC 服务器开发 高并发服务器-多进程并发服务器
高并发服务器一、多进程并发服务器1. 实现示意图2. 使用多进程并发服
服务器 linux 运维 #include #define -
【Linux网络编程】并发服务器之select模型
00. 目录文章目录00. 目录01. 概述02. I/O复用技术概述03. select模型服务器实现思路04. select模型服务器实现05. 附录01. 概述服务器设计技术有很多,按使用的协议来分有 TCP 服务器和 UDP 服务器,按处理方式来分有循环服务器和并发服务器。循环服务器与并发服务器模型在网络程序里面,一般来说都是许多客户对应一个服务器(多对一),为了处理客户的请求,对服务端的程序就提出了特殊的要求。目前最常用的服务器模型循环服务器:服务器在同一时刻只能响应一个客户端的请
select linux select io多路复用 Linux io多路复用 服务器