TCP并发服务器
单循环服务器:同一时刻,只能处理一个客户端的任务
并发服务器:同一时刻,只能处理多个客户端的任务
UDP 是具备并发性的,是因为UDP是无连接的,所以处理器可以处理过来
TCP实际上是单循环的服务器,只能建立一对一连接,其他人不能再与其建立连接,之前只有一个套接字
现状为了实现并发,我们给每一个连接都给予一个套接字
多进程流程:socket()---bind()---listen()---accept() ---fork()
IO多路复用:多个读写复用一个进程(在Linux里面就是文件读写)
阻塞IO:fgets,scanf,read,recv,getchar(用来实现多个IO同步的效果)
同步:具有先后顺序的效果(CPU占用率低,执行效率低)
非阻塞IO:非阻塞就是访问内核,有数据带着数据返回,没有数据也带着返回
(使用轮询方式实现,CPU占用率高)
获取方法: 1.获取原文件描述符的属性
2、增加非阻塞属性
3、设置新属性
信号驱动IO:实现:(当终端有输入的时候应该会触发,发射信号,才会执行)
1、增加异步属性 O_ASYNC(异步),O_SYNC(同步)
2、关联信号和当前的进程
3、注册信号
特点: 1、异步通知io的方式,节省CPU
2、只能检测少量io
3、效率高