| 并发模型 | 【UNP】对应 | 多进程 | 多线程 | 阻塞IO | IO复用 | 长连接 | 并发性 | 多核 | 开销 | 互通 | 顺序性 | 线程数 | 特点 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| accept+read/write | 0 | 否 | 否 | 是 | 否 | 否 | 无 | 否 | 低 | 否 | 是 | 是 | 一次服务一个客户 |
| accept+fork | 1 | 是 | 否 | 是 | 否 | 是 | 低 | 是 | 高 | 否 | 是 | 变 | process-per-connection |
| accept+thread | 6 | 否 | 是 | 是 | 否 | 是 | 中 | 是 | 中 | 是 | 是 | 是 | thread-per-connection |
| prefork | 2/3/4/5 | 是 | 否 | 是 | 否 | 是 | 低 | 是 | 高 | 否 | 是 | 变 | 见【UNP】 |
| pre threaded | 7/8 | 否 | 是 | 是 | 否 | 是 | 中 | 是 | 中 | 是 | 是 | 变 | 见【UNP】 |
| poll(reactor) | 6.8节 | 否 | 否 | 否 | 是 | 是 | 高 | 否 | 低 | 是 | 是 | 常 | 单线程reactor |
| reactor+thread-per-task | 无 | 否 | 是 | 否 | 是 | 是 | 中 | 是 | 中 | 是 | 否 | 变 | thread-per-request |
| reactor+worker thread | 无 | 否 | 是 | 否 | 是 | 是 | 中 | 是 | 中 | 是 | 是 | 变 | worker-thread-per-connection |
| reactor+thread pool | 无 | 否 | 是 | 否 | 是 | 是 | 高 | 是 | 低 | 是 | 否 | 常 | 主线程io,工作线程计算 |
| reactors in threads | 无 | 否 | 是 | 否 | 是 | 是 | 高 | 是 | 低 | 是 | 是 | 常 | one loop per thread(muduo) |
| reactors in process | 无 | 是 | 否 | 否 | 是 | 是 | 高 | 是 | 低 | 否 | 是 | 常 | one loop per process(nginx) |
| reactors+thread pool | 无 | 否 | 是 | 否 | 是 | 是 | 高 | 是 | 低 | 是 | 否 | 常 | 最灵活的io与cpu配置 |
常见并发模型对比
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 并发(并行),一直以来都是一个编程语言里的核心主题之一,也是被开发者关注最多的话题;Go语言作为一个出道以来就自带...
- 原创声明作者: 刘丹冰Aceld 本文主要介绍常见的Server的并发模型,这些模型与编程语言本身无关,有的编程语...
- 引出线程池 线程是并发编程的基础,前面的文章里,我们的实例基本都是基于线程开发作为实例,并且都是使用的时候就创建一...