线程介绍
一句话结论:浏览器里“进程负责隔离、线程负责并行”;JS 的“单线程”指主线程上同一时刻只能执行一段 JS,但并不妨碍浏览器/Worker 并行做别的事。
1. 进程 vs 线程
- 进程:资源隔离更强,崩溃影响面更小(浏览器用它做安全与稳定性)
- 线程:同进程内共享内存,切换成本更低(渲染进程内多线程协作)
2. 为什么 JS 主线程要“单线程”
- DOM 不是线程安全的:多线程同时改 DOM 会带来复杂锁与一致性问题
- 通过事件循环把“并发”变成“可预测的顺序执行”,降低心智负担
3. 如何获得真正的并行
- Web Worker:把 CPU 密集型计算放到 Worker(通过消息传递/共享内存协作)
- OffscreenCanvas:部分绘制也能搬到 Worker(视浏览器支持)