北斗网格性能优化(四):Web Worker 与 Transferable

Web Worker 是浏览器里独立于页面主线程的 JavaScript 执行环境,主线程通过消息派任务、收结果。Worker 不能访问 DOM,也拿不到 Cesium 的 WebGL 上下文 —— 它只能算,不能画。

Transferable 用来在线程之间转移 ArrayBuffer 的所有权:缓冲区不复制,发送方失去访问权,接收方直接拿到这块内存。这也是唯一一个能把大数组跨线程搬过去、又不付出一次完整拷贝的办法。

这套北斗网格的做法是:一个 Worker,主线程前面配一个按距离排序的队列,同一时刻只跑一个任务;Worker 把实例矩阵、颜色、网格索引、占用标记四组类型化数组用 Transferable 交回主线程。

它把生成搬出主线程,不减少计算量。GPU 上传仍然在主线程完成,Transferable 只免掉线程之间的复制,不会把数据直接变成显存。

阅读更多