We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
用来对 SharedArrayBuffer 对象进行原子操作。
多个共享内存的线程能够同时读写同一位置上的数据。原子操作会确保正在读或写的数据的值是符合预期的,即下一个原子操作一定会在上一个原子操作结束后才会开始,其操作过程不会中断。(阻塞?)
BigInt
true
false
NaN
Atomics.wait 中示例代码不能直接在主线程执行(我做了修改),规范中也在调用 AgentCanSuspend 时明确提到了:
在某些环境中,挂起代理程序可能不合理。例如,在浏览器环境中,禁止挂起文档的主事件处理线程,但是同时仍然允许 workers 的事件处理线程挂起。
workers
如果直接在浏览器控制台输入 MDN 给的代码会报错!需要用 Worker 开辟新的线程,在新的线程中使用 Atomics.wait 睡眠该线程。
Worker
Atomics.wait
永远不应该尝试睡眠主线程!
我在 codepen 上写了个例子,可以看看:https://codepen.io/lizhongzhen11/project/editor/AmzyaY# (记得打开f12看浏览器控制台输出,用谷歌,同事用的火狐打开报 SharedArrayBuffer 未定义)
SharedArrayBuffer
The text was updated successfully, but these errors were encountered:
从mdn过来的,,,
Sorry, something went wrong.
No branches or pull requests
Atomics 对象
用来对 SharedArrayBuffer 对象进行原子操作。
共享内存通信的规则由 内存模型 提供
Atomics.add ( typedArray, index, value )
Atomics.and ( typedArray, index, value )
Atomics.compareExchange ( typedArray, index, expectedValue, replacementValue )
BigInt
,true
,返回 newBytesAtomics.exchange ( typedArray, index, value )
Atomics.isLockFree ( size )
true
false
Atomics.load ( typedArray, index )
Atomics.or ( typedArray, index, value )
Atomics.store ( typedArray, index, value )
Atomics.sub ( typedArray, index, value )
Atomics.wait ( typedArray, index, value, timeout )
NaN
,定义 t 为 +∞,否则定义 t 为 max(q, 0)false
,抛 TypeError 异常true
,true
,返回字符串 "ok"Atomics.notify ( typedArray, index, count )
Atomics.xor ( typedArray, index, value )
注意
Atomics.wait 中示例代码不能直接在主线程执行(我做了修改),规范中也在调用 AgentCanSuspend 时明确提到了:
如果直接在浏览器控制台输入 MDN 给的代码会报错!需要用
Worker
开辟新的线程,在新的线程中使用Atomics.wait
睡眠该线程。永远不应该尝试睡眠主线程!
我在 codepen 上写了个例子,可以看看:https://codepen.io/lizhongzhen11/project/editor/AmzyaY# (记得打开f12看浏览器控制台输出,用谷歌,同事用的火狐打开报
SharedArrayBuffer
未定义)The text was updated successfully, but these errors were encountered: