当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Node.js worker.markAsUntransferable(object)用法及代码示例


worker.markAsUntransferable(object)

添加于:v14.5.0、v12.19.0

将对象标记为不可转移。如果 object 出现在 port.postMessage() 调用的传输列表中,则将其忽略。

特别是,这对于可以被克隆而不是传输的对象以及被发送方的其他对象使用的对象是有意义的。例如,Node.js 标记ArrayBuffers 它用于其Buffer.allocUnsafe(size)有了这个。

此操作无法撤消。

const { MessageChannel, markAsUntransferable } = require('node:worker_threads');

const pooledBuffer = new ArrayBuffer(8);
const typedArray1 = new Uint8Array(pooledBuffer);
const typedArray2 = new Float64Array(pooledBuffer);

markAsUntransferable(pooledBuffer);

const { port1 } = new MessageChannel();
port1.postMessage(typedArray1, [ typedArray1.buffer ]);

// The following line prints the contents of typedArray1 -- it still owns
// its memory and has been cloned, not transferred. Without
// `markAsUntransferable()`, this would print an empty Uint8Array.
// typedArray2 is intact as well.
console.log(typedArray1);
console.log(typedArray2);

浏览器中没有与此 API 等效的函数。

相关用法


注:本文由纯净天空筛选整理自nodejs.org大神的英文原创作品 worker.markAsUntransferable(object)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。