层使用 RPC 协议的库使工作线程中的对象看起来可以从主线程访问反之亦然。使用 Comlink 时您根本不必处理 postMessage。唯一的问题是由于 postMessage 的异步特性函数不会返回其结果而是返回其结果。在我看来这为您提供了最佳的 Actor 模型和共享内存并发性。 如何使用 Comlink 的示例取自 Comlink 的自述文件。 Comlink 包装了一个工作线程并让您可以访问公开的值。(大预览) Comlink并不神奇它仍然要使用postMessage作为RPC协议。如果您的应用程序最终成为 postMessage 成为瓶颈的罕见情况之一那么了解ArrayBuffers可以传输是很有用的。
传输几乎是即时的并且涉及所有权
发送 JavaScript 范围将失去对进程中数据的访问权限。当我尝试在主线程之外运行 WebVR 应用程序的物理模拟时我使用了这个技巧。 并发模型 澳大利亚电话号码表 共享内存 正如我上面提到的传统的线程方法基于共享内存。这种方法在 JavaScript 中不可行因为几乎所有 API 都是在假设不存在对对象的并发访问的情况下构建的。现在更改它要么会破坏网络要么会因为现在需要同步而导致显着的性能成本。相反共享内存的概念仅限于一种专用类型SharedArrayBuffer(或简称 SAB SAB 与 ArrayBuffer 类似是可以使用类型化数组或DataView进行操作的线性内存块。
如果通过发送另一端不会收到数据的副本而是收到
完全相同的内存块的句柄。一个线程所做的每一项更改对于所有其他线程都是可见的。为了允许您构建自己的互斥体和其他并发数据结构Atomics提供了用于原子操作或线程安全等待机制的各种实用程序。 这 B2C 电话列表 种方法的缺点有多种。首先它只是一块内存。它是一个非常低级的原语为您提供了大量的灵活性和功能但代价是增加了工程工作和维护。您也没有直接的方法来处理您熟悉的 JavaScript 对象和数组。它只是一系列字节。 作为改进人体工程学的实验方法我编写了一个名为buffer-backed-object 的库它合成 JavaScript 对象将其值保存到底层缓冲区。