并发编程——IO模型(重点)

python学习网 2020-08-27 23:43:07
1、 内存分为内核缓冲区和用户缓冲区(网络下载的资源,硬盘加载的资源,先放到内核缓冲区----》copy到应用程序的缓冲区,应用程序才能用这个数据)

2、io模型:
-阻塞io(BIO)
    ~用户进程从发起请求,到最终拿到数据前,一直挂起等待; 数据会由用户进程完成拷贝
-非阻塞io(NIO)
    ~用户进程发起请求,如果数据没有准备好,那么立刻告知用户进程未准备好;此时用户进程可选择继续发起请求、或者先去做其他事情,稍后再回来继续发请求,直到被告知数据准备完毕,可以开始接收为止; 数据会由用户进程完成拷贝
-io多路复用(io多路复用是阻塞式IO,有阻塞的过程就是阻塞式IO)
select(windows支持,windows不支持epoll,这也就是官方不提供redis的window版本的原因,windows也扛不住)select支持的文件描述符数量太小了,默认是1024--主动问数据,主动取数据
poll(windows支持,linux支持)---还是要自己要去主动取一下数据去下
epoll(windows不支持,linux支持)---当有数据时自动爆发出来,数据直接送过来

    ~复用也就是共用的意思
    ~类似BIO,只不过找了一个代理,来挂起等待,并能同时监听多个请求; 数据会由用户进程完成拷贝
-异步io:
-信号驱动io(理论,不在考虑范围内)

 

 

 

 

 

 

 

 

 

 

 

---40---

阅读(2384) 评论(0)