文章目录
IO模型
同步IO
- 在IO过程中当前线程被挂起,当前线程其他需要CPU计算的代码无法执行
- 一般的io是同步的
- 多线程可解决该问题
- 计算和IO任务可以由不同的线程负责
- 但会带来线程创建、切换的成本,而且线程数不能无上限地增加
异步IO
当前线程只发出IO指令,但不等待其执行结束,而是先执行其他代码,避免线程因IO操作而阻塞
事件驱动模型
- 一种编程范式,程序执行流由外部事件决定
- 包含一个事件循环,当外部事件发生时使用回调机制来触发相应的处理
- 可能的实现机制
• 每收到一个请求,创建一个新的进程来处理该请求;
• 每收到一个请求,创建一个新的线程来处理该请求;
• 每收到一个请求,放入一个事件列表让主进程通过非阻塞IO方式来处理请求 - 一般场景
当程序中有许多任务,任务之间高度独立(不需要互相通信或等待彼此等),并且在等待事件到来时,某些任务会阻塞
事件列表模型
-
<