异步等于多线程吗?

这个主要是记录下自己长期以来的一个误区,认为异步的本质就是多线程。

这个误解主要是来源于对异步执行的理解,认为异步执行就是当主线程执行到一个耗时操作时,为了不阻塞主线程,我们另起一个线程去执行这个耗时任务,当这个任务执行完成后,子线程会通知主线程。

尽管很多文章中都写道:异步是目的,多线程是实现异步的一种方式。但是由于这些文章没有深入,反而让我更糊涂了,认为异步执行是一定要多线程支持才行的,毕竟不阻塞主线程,但是那个任务总得有个线程去执行吧。

只要一句话就可以讲清楚:

计算机中的I/O操作是不需要CPU全程参与的,因此也就不需要线程。

也就是说,只要这个任务不是需要CPU参与的任务,那么就不需要启动一个线程去处理,因为我们知道线程是进行CPU调度的最小单位。CPU发起IO操作命令,硬件就会自行和内存交换数据,并不影响CPU执行后面的操作,等到数据交换完成后硬件触发中断告知CPU IO操作已完成,这样就完成了异步调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值