我现在正在处理隔离体,想知道使用IndexedDB在隔离体之间共享数据是不是一种很好的通信方式?具体地说,我希望一个隔离能够写入它,然后告诉其他隔离它们可以读取它。这些数据一旦被写入,就会被认为是不变的,而且非常大。我想这样做的主要原因是因为我不想发送一个6MB的Map到3个不同的隔离,因为它在程序中有点密集。
发布于 2014-02-17 07:34:51
Web工作线程允许您在不复制的情况下在工作进程之间传递数组缓冲区。但是,一旦您将数组缓冲区传递给另一个worker,原始worker就会失去对其内容的访问权限。
因此您可以尝试将数据结构存储在数组缓冲区中以利用这一点。
请参阅此mdn article和html5rocks。
因此,对于Dart,将您的数据存储在ByteData中,然后当通过Dart编译时,这不应该被复制,而是传输。
附注: Mozilla还在做一些实验,跨多个web workers共享可变访问数组缓冲区。这是为了允许emscripten将多线程c代码编译成javascript。这种共享访问可能需要一段时间才能实现标准化和广泛实施。
发布于 2014-02-15 17:49:58
如果您想要将数据存储在IndexedDB中,这是很好的。如果你这样做仅仅是为了优化通信,我不认为这是对直接发送的改进。序列化/反序列化通常是CPU最密集的部分。另外,使用IndexedDB对慢速磁盘进行一次写入和三次读取。
https://stackoverflow.com/questions/21792901
复制相似问题