Atomics.exchange()

简介: Atomics.exchange()

MDN文档

注意: 这是一个实验中的功能


Atomics.exchange() 静态方法会用给定的值替换掉数组上的值,然后返回数组的旧值。此原子操作保证在写上修改的值之前不会发生其他写操作。


语法

Atomics.exchange(typedArray, index, value)


参数:

  • typedArray
    一个共享的整型 typed array 。例如 Int8ArrayUint8ArrayInt16ArrayUint16ArrayInt32Array ,或者 Uint32Array
  • index
    被替换的 typedArray 值的索引
  • value
    去替换的值


返回值:

给定位置的旧值typedArray[index] )。


错误:

  • 假如 typedArray 不是允许的整型之一,则抛出 TypeError
  • 假如 typedArray 不是一个shared typed array类型,则抛出 TypeError
  • 如果 index 超出了 typedArray 的边界,则抛出 RangeError


示例

const sab = new SharedArrayBuffer(1024);
const ta = new Uint8Array(sab);
const old = Atomics.exchange(ta, 0, 12);
console.log(old) // 0
const now = Atomics.load(ta, 0);
console.log(now) // 12
目录
相关文章
|
5月前
|
消息中间件
PRECONDITION_FAILED - inequivalent arg ‘type‘ for exchange ‘exchange‘ in vhost ‘/‘: received ‘direct
PRECONDITION_FAILED - inequivalent arg ‘type‘ for exchange ‘exchange‘ in vhost ‘/‘: received ‘direct
42 0
Direct exchange
我们构建了一个简单的日志记录系统。我们能够向许多接收者广播日志消息。在本节我们将向其中添加一些特别的功能-比方说我们只让某个消费者订阅发布的部分消息。例如我们只把严重错误消息定向存储到日志文件(以节省磁盘空间),同时仍然能够在控制台上打印所有日志消息。
Direct exchange
|
索引
Atomics.compareExchange()
Atomics.compareExchange()
120 0
|
存储
Atomics.store()
Atomics.store()
74 0
transfer = C only read dynamically - why it fails to work
transfer = C only read dynamically - why it fails to work
115 0
transfer = C only read dynamically - why it fails to work
|
存储 缓存 关系型数据库
Buffer_Management
PolarDB的实现是基于共享存储的一写多读架构,主备使用共享存储中的一份数据。读写节点,也称为主节点或Primary节点,可以读写共享存储中的数据;只读节点,也称为备节点或Replica节点,仅能各自通过回放日志,从共享存储中读取数据,而不能写入。
Buffer_Management