扫码关注官方订阅号
最近面试的被问到这样一个题能大概说出些,但是不全
能否科普下相关内容,网上查的都大同小异
认证0级讲师
这是个朴素但是不精确的回答, 主要是帮你理解
同步的代码, 在很多情况下, CPU其实是在等待中度过的, 比如等待一个网络连接, 等待MySQL服务器的数据返回异步的代码, 就是把这些等待的时间给充分利用起来了, 把网络连接, 访问数据库这种耗时的工作时都在注册一个callback或者event之后切换出来, 让CPU先去干别的活(例如响应别的请求), 当网络连接,数据库返回结果时再回来执行刚才的callback中的代码
异步的代码可以大大的提升系统的容量上限, 因为充分利用了空闲的CPU时间, 但是对于单个的请求的性能提升帮助比较有限 (除非你的单个请求大量依赖这种IO操作)
js是单线程。单线程碰到阻塞就楞b了(阻塞在那边),所以要用异步。
同步你得等着,不能干其他的;异步你得先说好了干啥,就不管了,干其他的了。后续代码有数据依赖,你就得同步候着。没依赖关系就各玩各的
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
这是个朴素但是不精确的回答, 主要是帮你理解
同步的代码, 在很多情况下, CPU其实是在等待中度过的, 比如等待一个网络连接, 等待MySQL服务器的数据返回
异步的代码, 就是把这些等待的时间给充分利用起来了, 把网络连接, 访问数据库这种耗时的工作时都在注册一个callback或者event之后切换出来, 让CPU先去干别的活(例如响应别的请求), 当网络连接,数据库返回结果时再回来执行刚才的callback中的代码
异步的代码可以大大的提升系统的容量上限, 因为充分利用了空闲的CPU时间, 但是对于单个的请求的性能提升帮助比较有限 (除非你的单个请求大量依赖这种IO操作)
js是单线程。单线程碰到阻塞就楞b了(阻塞在那边),所以要用异步。
同步你得等着,不能干其他的;异步你得先说好了干啥,就不管了,干其他的了。后续代码有数据依赖,你就得同步候着。没依赖关系就各玩各的