IO多路复用及异步非阻塞
IO多路复用
传统方法,使用多进程并发模型,每进来一个新的i/o流都会单独去分配一个新的进程去管理(开辟出无限个进程,增加系统负担,导致崩溃死机)
后来使用i/o多路复用(利用单个线程,通过记录和跟踪每个i/o流状态,来同时管理多个i/o连接)
select , poll ,epoll 都是i/o多路复用的具体实现.
异步非阻塞
- 同步
- 从上到下,一次执行
- 异步
- 无需等待当前程序执行完毕,就开始执行下一个程序
- 阻塞
- 程序遇到sleep、input、listen、recv、...,会阻塞
- 非阻塞
- 程序没有需要等待交互的代码,直接执行
- 异步非阻塞
- 场景发生在多进程/多线程之间
- 没有任何io等待,同时执行任务
- 设置setblocking(False) (设置非阻塞
了解)