博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
为什么我觉得 nio 比 aio 更适合高并发
阅读量:2352 次
发布时间:2019-05-10

本文共 484 字,大约阅读时间需要 1 分钟。

nio 是同步非阻塞的,aio 是异步非阻塞的,初看,肯定是异步的更好更高级啊,那为什么我觉得 nio 比 aio 更适合高并发呢?嗯,一定是哪儿出了问题。

这个要涉及到它们两个的具体实现和使用了。

首先,我们想象 bio 高并发的最主要限制条件是什么?阻塞。对,阻塞是对资源极大的浪费,但 nio 和 aio 两个都是非阻塞的,这个问题不是决定原因。

那么,第二限制条件呢?线程。对,就是线程,想想如果同时有一万个并发量,我们要建立一万个线程,唉,估计要把操作系统累死了,线程切换调度消耗极大。

那怎么解决呢?如果我们只用少量线程能不能实现呢?答案是可以的,我们利用 nio 同步非阻塞的特性,把各种请求当成一个个时间,然后用几个固定的线程去依次执行这行事件,形成一个或多个事件循环,这样我们可以同时处理高达上万的并发,当然,事件循环一个不能有阻塞调用,否则,一旦阻塞了事件循环,这个事件循环里的所有事件都执行不了了。netty 高并发的原理就是这样的。

而 aio 呢?aio 的回调是要开线程的,它只是解决了阻塞浪费资源的问题,并没有解决高并发时线程调度的开销。

转载地址:http://wuwtb.baihongyu.com/

你可能感兴趣的文章
pycharm不同测试框架的设置、unittest测试案例
查看>>
python unittest TestCase间共享数据(全局变量的使用)
查看>>
Python中普通字符串 & json字符串&json对象的区别
查看>>
python中json.dumps()和json.dump() 以及 json.loads()和json.load()的区分
查看>>
Python3中打开文件的方式(With open)
查看>>
python中unittest加载测试用例的4种方法
查看>>
iOS中使用RNCryptor对资源文件加密
查看>>
Device Tree编译工具dtc
查看>>
softlockup/hardlockup原理详细介绍
查看>>
项目管理学习笔记之八风险管理过程总结
查看>>
项目管理学习笔记之九采购管理过程总结
查看>>
solaris常用命令总结
查看>>
邮件安全证书(S/MIME),如何申请邮件证书
查看>>
Go语言基础入门--简介
查看>>
Go语言基础入门--变量,类型
查看>>
Go语言基础入门--数组,切片,map
查看>>
Go语言基础入门--if,for,range,switch
查看>>
Go语言基础入门--函数,错误处理
查看>>
VIM 学习系列之基本命令,常用命令
查看>>
轻松搭建安全、轻量、极速、简约的博客Eiblog
查看>>