这个原子能
namespace对象包含用于执行原子操作的静态方法。它们用于SharedArrayBuffer(共享阵列缓冲区)
和阵列缓冲区
物体。
与大多数全局对象不同,原子能
不是构造函数。您不能将其与新的
操作人员或调用原子能
对象作为函数。的所有属性和方法原子能
是静态的(就像数学
对象)。
共享内存时,多个线程可以在内存中读写相同的数据。原子操作确保写入和读取可预测的值,确保操作在下一个操作开始之前完成,并且操作不会中断。
这个等待()
和通知()
方法是在Linux futexes(“快速用户空间互斥体”)上建模的,并提供了等待特定条件实现的方法,通常用作阻塞构造。
const sab=新的SharedArrayBuffer(1024);const ta=新Uint8Array(sab);ta[0];//0ta[0]=5;//5原子。添加(ta,0,12);//5原子载荷(ta,0);//17原子和(ta,0,1);//17原子载荷(ta,0);//1原子比较交换(ta,0,5,12);//1原子载荷(ta,0);//1原子交换(ta,0,12);//1原子载荷(ta,0);//12Atomics.isLockFree(1);//真实的Atomics.isLockFree(2);//真实的Atomics.isLockFree(3);//假Atomics.isLockFree(4);//真实的原子或(ta,0,1);//12原子载荷(ta,0);//13原子存储(ta,0,12);//12原子.sub(ta,0,2);//12原子载荷(ta,0);//10原子异或(ta,0,1);//10原子载荷(ta,0);//11
给定共享Int32阵列
:
const sab=新的SharedArray缓冲区(1024);const int32=新的Int32Array(sab);
读取线程正在睡眠并等待位置0,该位置应为0。只要这是真的,它就不会继续。然而,一旦写入线程存储了一个新值,它就会被写入线程通知并返回新值(123)。
原子等待(int32,0,0);控制台.log(int32[0]);//123
写入线程存储一个新值,并在写入后通知等待线程:
控制台.log(int32[0]);//0;原子存储(int32,0,123);Atomics.notify(int32,0,1);
BCD表仅在浏览器中加载