目前 JavaScript 缺少一个真正可用的多线程并发编程模型。当然 SharedArrayBuffer 和 Atomics 标准的制定也有一段时间了,但是:
- SAB 和 Atomics 一直都是一个实验特性,最近还因为会被“熔断”和“幽灵”这样的时间攻击漏洞所利用而在各大浏览器里面被“下架”了;
- 因为 JavaScript 本身没有类型系统,无法定义数据结构的内存布局。在只能共享 Typed Arrays 内存缓冲区的情况下,要在 JavaScipt 中使用多线程并发还是相当困难的。
1 SAB和Atomics的基本概念
SharedArrayBuffer - JavaScript | MDN
一个通用的、固定长度的原始二进制数据缓冲区,