繁体   English   中英

使用IndexedDB在Isolates之间共享内存

[英]Shared memory between Isolates using IndexedDB

我现在正在使用Isolates,并想知道使用IndexedDB在Isolates之间共享数据是否是一种很好的沟通方式? 具体来说,我希望一个Isolate能够写入它,然后告诉其他Isolates他们可能只读它。 这是一旦写入就被认为是不变的数据并且相当大。 我想这样做的主要原因是因为我不想将6MB Map发送到3个不同的Isolate,因为它对程序来说有点密集。

Web worker允许您在工作之间传递数组缓冲区而无需复制。 但是,一旦将数组缓冲区传递给另一个worker,原始worker就会失去对其内容的访问权限。

因此,您可以尝试将数据结构存储在数组缓冲区中以利用此功能。

请参阅此mdn文章html5rocks

因此对于Dart,将数据存储在ByteData中 ,然后在通过dartjs编译时,不应复制,而是传输。

旁注:Mozilla还在对多个Web工作者的数组缓冲区进行共享可变访问的实验。 这是为了让emscripten能够将多线程c代码编译为javascript。 这种共享访问可能需要一段时间才能实现标准化和广泛实施。

如果你想将数据存储在IndexedDB中,这很好。 如果你这样做只是为了优化通信,我认为这不是直接发送的改进。 序列化/反序列化通常是CPU密集程度最高的部分。 使用IndexedDB另外写入一次并从慢速磁盘读取三次。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM