【问题标题】:Javascript Async buffer copyJavascript异步缓冲区复制
【发布时间】:2017-04-20 12:34:42
【问题描述】:

所以我知道这可能是一个长远的目标,但也许有人可以提供帮助。

有什么方法可以异步复制缓冲区吗?可能通过某种方式使用 blob?下面是一个类似于我正在寻找的东西的例子(显然不起作用,只是为了说明)。需要这个才能在客户端工作。

var fromBuffer = new Uint8Array(1056); //just some random data
var bufferToCopyTo;
var req = new XMLHttpRequest();
req.open("GET", "fromBuffer", true);
req.responseType = "blob";

req.onload = function(e) {
  bufferToCopyTo = req.response;

};

req.send();
//continue while buffer makes a copy in the background?

【问题讨论】:

  • 你到底需要这个做什么?
  • 用于客户端多线程。尝试在代码的串行部分运行时复制缓冲区以传递给后台的工作人员。它用于视频解码器
  • 我会调查postMessage 和使用结构化克隆算法的朋友。
  • 不,因为您根本不会复制缓冲区,而是将其转移到后台工作人员。
  • 我确实需要复制,因为没有共享内存。所有工作人员都需要自己的副本来处理

标签: javascript asynchronous blob arraybuffer typed-arrays


【解决方案1】:

有什么方法可以异步复制缓冲区吗?

不,不能在其他代码运行时复制缓冲区,否则可能会出现访问/写入缓冲区元素的竞争条件。

但是,如果复制花费了异常的时间并且分块没有帮助,您可以做的是将transfer 缓冲区发送到后台工作人员,在其中制作一份副本,然后将两者都传回到主线程。这当然意味着缓冲区在被复制时不能被使用。

【讨论】:

  • 恐怕你是对的 :(。不过值得一试。
猜你喜欢
  • 1970-01-01
  • 2016-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多