多线程服务器 编程模型
多线程的价值在于发挥多核处理器的性能,单核使用状态机是最高效的。
提高平均响应时间
TCP网络编程 本质
处理三个半事件
- 连接的建立
- 链接的断开
- 消息到达
- 消息发送完毕,对于低流量的服务不必关心
one loop per thread
好处:
- 线程数目基本固定,不会频繁创建销毁
- 可以方便地调配负载
- IO事件发生的线程固定,无需考虑并发。
并发设计方案
- 迭代服务器
- accept + fork
- thread per connection -> 不适合短链接服务,系统负担大
- IO 多路复用(必然要有非阻塞 和 Buffer)
- 多线程Reactor-> + 工作线程池
eventloop 作为 非阻塞IO和定时器, thread poll 用作计算模型。