nodejs 事件循环阻断

最近刷snyk这家公司的的技术博客时发现了一篇有意思的文章:

顺便一提, 里面总共1200多篇博客已经挑选我感兴趣的全部看过了😀, 我对这种技术博客还是挺感兴趣的, 也推荐另外一个已经都刷完的博客站点

stackblitz 就是那个做出在浏览器内运行nodejs环境的公司, 日常我们会在上面进行各种前端项目的demo即时开发

回到正题, How even quick Node.js async functions can block the Event-Loop这篇博客的时间比较久远了(2019年2月份), 演示使用的还是nodejs 10, 但是提到的关于nodejs的事件循环机制还是比较有意思的.

原文内容已经很详细, 建议完整阅读, 我按照原文步骤在我自己的Mac上进行了实验, 结果略有不同, 这可能跟测试设备有关系

Examples below use Node 10.9.0 on an Ubuntu 18.04 VM with 4 cores, running on a MacBook Pro 2017

我是在MacBook Pro M1 (10核)上直接运行的, 在setImmediate一项上的测试结果与原文不太一致, CPU利用率最高只到20%, 没有像原文那样达到100%

# 测试结果

# 结论

虽然setImmediate的测试数据与原文有出入, 但是不影响最终结论

在适当利用异步来让出线程的方法上 setImmediate wins! 🎉