javascript - 如何在 Javascript 中将“ArrayBuffer”转换为“SharedArrayBuffer”?
问题描述
采取以下代码段:
const arr = [1.1, 2.2, 3.3]
const arrBuffer = (Float32Array.from(arr)).buffer
如何将此ArrayBuffer转换为SharedArrayBuffer?
const sharedArrBuffer = ...?
解决方案
请注意,两者ArrayBuffer
都SharedArrayBuffer
支持数据指针,您只能通过类型化数组(如您的示例中的 Float32Array)与之交互。数组缓冲区表示内存分配,不能“强制转换”(仅用类型化数组表示)。
如果您已经有一个类型化的数组,并且需要将其复制到一个新的 SharedArrayBuffer 中,您可以使用set
:
// Create a shared float array big enough for 256 floats
let sharedFloats = new Float32Array(new SharedArrayBuffer(1024));
// Copy floats from existing array into this buffer
// existingArray can be a typed array or plain javascript array
sharedFloats.set(existingArray, 0);
(通常,您可以拥有一个数组缓冲区并通过多个“类型化镜头”与其交互 - 因此,基本上,将数组缓冲区转换为不同的类型,例如 Float32 和 Uint8。但是您不能将 ArrayBuffer 转换为 SharedArrayBuffer ,您需要复制其内容。)
推荐阅读
- tensorflow - 将 Flask-Socketio 与 Tensorflow 模型一起使用会导致模型在预测时出错
- assembly - 汇编语言引导加载程序代码问题
- netlogo - 创建有多个路径和连续链接的节点网络
- sql-server - 约束两个外键
- security - 授权请求中的状态参数 (OAuth2)
- javascript - 获取带有 /r/n 值的 url 查询字符串
- tin-can-api - 从 TinCan 简历(无 LMS)
- flutter - 新颤振升级中的地理编码器运行时错误
- java - compileOnly 两个相似的库来生成一个 APK
- javascript - 用 JavaScript 解决这个问题的更高效的方法是什么