JavaScript为什么是单线程?
设计初衷:响应事件、操作dom、发送网络请求。处理I/O密集型任务,而非处理计算密集型任务。
单线程原因:简化开发、避免dom操作冲突、适应浏览器环境。
浏览器环境:渲染引擎是单线程
虽然js本身是单线程、但是运行环境可以支持多线程能力
通过js的事件循环异步机制和web workers解决单线程的高并发性能问题。
什么是事件循环?
目的:事件循环是解决js单线程既能异步又不阻塞的调度器。
机制:主线程、微任务、宏任务、微任务、宏任务……
什么是高并发?
单位时间内涌入大量的请求/链接/任务,程序依旧保持低延迟、高吞吐、不崩溃运行。