Baseline Widely available *
ÐбÑÐµÐºÑ Atomics
пÑедоÑÑавлÑÐµÑ Ð°ÑомаÑнÑе опеÑаÑии как ÑÑаÑиÑеÑкие меÑодÑ. ÐÑполÑзÑеÑÑÑ Ð²Ð¼ÐµÑÑе Ñ Ð¾Ð±ÑекÑом SharedArrayBuffer
.
ÐÑомаÑнÑе опеÑаÑии ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ñ Ð² модÑле Atomics
. РоÑлиÑие Ð¾Ñ Ð´ÑÑгиÑ
глобалÑнÑÑ
обÑекÑов, Atomics
не ÑвлÑеÑÑÑ ÐºÐ¾Ð½ÑÑÑÑкÑоÑом. Ðго нелÑÐ·Ñ Ð¸ÑполÑзоваÑÑ Ð²Ð¼ÐµÑÑе Ñ Ð¾Ð¿ÐµÑаÑоÑом new
или вÑзÑваÑÑ Ð¾Ð±ÑÐµÐºÑ Atomics
как ÑÑнкÑиÑ. ÐÑе ÑвойÑÑва и меÑÐ¾Ð´Ñ Atomics
ÑÑаÑиÑеÑкие (как Ñ Ð¾Ð±ÑекÑа Math
, к пÑимеÑÑ).
Atomics[Symbol.toStringTag]
ÐнаÑение ÑÑого ÑвойÑÑва - "Atomics".
Ðогда памÑÑÑ Ñазделена, неÑколÑко поÑоков могÑÑ ÑиÑаÑÑ Ð¸ запиÑÑваÑÑ Ð¾Ð´Ð½Ð¸ и Ñе же даннÑе в памÑÑÑ. ÐÑомаÑнÑе опеÑаÑии гаÑанÑиÑÑÑÑ, ÑÑо ожидаемÑе знаÑÐµÐ½Ð¸Ñ Ð±ÑдÑÑ Ð·Ð°Ð¿Ð¸ÑÐ°Ð½Ñ Ð¸ пÑоÑиÑанÑ, а опеÑаÑии завеÑÑенÑ, пÑежде Ñем ÑледÑÑÑÐ°Ñ Ð¾Ð¿ÐµÑаÑÐ¸Ñ Ð½Ð°ÑнÑÑ ÑÐ²Ð¾Ñ ÑабоÑÑ, и они не бÑдÑÑ Ð¿ÑеÑванÑ.
Atomics.add()
ÐобавлÑÐµÑ Ð¿ÑедÑÑавленное знаÑение к ÑекÑÑÐµÐ¼Ñ Ð¿Ð¾ Ñказанной позиÑии в маÑÑиве. ÐозвÑаÑÐ°ÐµÑ Ð¿ÑедÑдÑÑее знаÑение в ÑÑой позиÑии.
Atomics.and()
ÐÑÑиÑлÑÐµÑ Ð¿Ð¾Ð±Ð¸Ñовое AND в Ñказанной позиÑии маÑÑива. ÐозвÑаÑÐ°ÐµÑ Ð¿ÑедÑдÑÑее знаÑение в ÑÑой позиÑии.
Atomics.compareExchange()
Ð¡Ð¾Ñ ÑанÑÐµÑ Ð¿ÑедÑÑавленное знаÑение в ÑказаннÑÑ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ Ð¼Ð°ÑÑива, еÑли оно ÑквиваленÑно пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð½Ð¾Ð¼Ñ Ð·Ð½Ð°ÑениÑ. ÐозвÑаÑÐ°ÐµÑ Ð¿ÑедÑдÑÑее знаÑение.
Atomics.exchange()
Ð¡Ð¾Ñ ÑанÑÐµÑ Ð¿ÑедÑÑавленное знаÑение в ÑказаннÑÑ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ Ð¼Ð°ÑÑива. ÐозвÑаÑÐ°ÐµÑ Ð¿ÑедÑдÑÑее знаÑение.
Atomics.load()
ÐозвÑаÑÐ°ÐµÑ Ð·Ð½Ð°Ñение из Ñказанной позиÑии маÑÑива.
Atomics.or()
ÐÑÑиÑлÑÐµÑ Ð¿Ð¾Ð±Ð¸Ñовое OR в Ñказанной позиÑии маÑÑива. ÐозвÑаÑÐ°ÐµÑ Ð¿ÑедÑдÑÑее знаÑение в ÑÑой позиÑии.
Atomics.store()
Ð¡Ð¾Ñ ÑанÑÐµÑ Ð¿ÑедÑÑавленное знаÑение в ÑказаннÑÑ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ Ð¼Ð°ÑÑива. ÐозвÑаÑÐ°ÐµÑ Ð·Ð½Ð°Ñение.
Atomics.sub()
ÐÑÑиÑÐ°ÐµÑ Ð¿ÑедÑÑавленное знаÑение из ÑекÑÑего по Ñказанной позиÑии в маÑÑиве. ÐозвÑаÑÐ°ÐµÑ Ð¿ÑедÑдÑÑее знаÑение в ÑÑой позиÑии.
Atomics.xor()
ÐÑÑиÑлÑÐµÑ Ð¿Ð¾Ð±Ð¸Ñовое XOR в Ñказанной позиÑии маÑÑива. ÐозвÑаÑÐ°ÐµÑ Ð¿ÑедÑдÑÑее знаÑение в ÑÑой позиÑии.
wait()
и wake()
меÑÐ¾Ð´Ñ Ð¼Ð¾Ð´ÐµÐ»Ð¸ÑÑÑÑÑÑ Ð½Ð° оÑнове futexes ("fast user-space mutex" - бÑÑÑÑÑй мÑÑÑÐµÐºÑ Ð¿Ð¾Ð»ÑзоваÑелÑÑкого пÑоÑÑÑанÑÑва) Linux и пÑедоÑÑавлÑÑÑ Ñобой ÑпоÑÐ¾Ð±Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ð¼Ð¾Ð¼ÐµÐ½Ñа, когда опÑеделÑнное ÑоÑÑоÑние не ÑÑÐ°Ð½ÐµÑ true, и обÑÑно иÑполÑзÑеÑÑÑ ÐºÐ°Ðº блокиÑÑÑÑие конÑÑÑÑкÑии.
Atomics.wait()
ÐÑовеÑÑеÑ, ÑодеÑжиÑÑÑ Ð² Ñказанной позиÑии маÑÑива вÑе еÑÑ Ð¿ÑедÑÑавленное знаÑение и ÑÐ¿Ð¸Ñ Ð² ожидании или Ñайм-аÑÑ. ÐозвÑаÑÐ°ÐµÑ "ok"
, "not-equal"
или "timed-out"
. ÐÑли ожидание не ÑазÑеÑено в вÑзÑваÑÑем агенÑе, Ñогда вÑбÑоÑÐ¸Ñ Ð¾ÑÐ¸Ð±ÐºÑ Ð¸ÑклÑÑÐµÐ½Ð¸Ñ (болÑÑинÑÑво бÑаÑзеÑов не ÑазÑеÑаÑÑ wait()
в главном поÑоке бÑаÑзеÑа).
Atomics.wake()
ÐÑобÑÐ¶Ð´Ð°ÐµÑ Ð½ÐµÐºÐ¾ÑоÑÑÑ Ð°Ð³ÐµÐ½Ñов, коÑоÑÑе ÑпÑÑ Ð² оÑеÑеди Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ð² Ñказанной позиÑии маÑÑива. ÐозвÑаÑÐ°ÐµÑ ÐºÐ¾Ð»Ð¸ÑеÑÑво агенÑов, коÑоÑÑе бÑли ÑазбÑженÑ.
Atomics.isLockFree(size)
ÐпÑимизаÑионнÑй пÑимиÑив, коÑоÑÑй Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¸ÑполÑзован Ð´Ð»Ñ Ð¾Ð¿ÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¸ÑполÑзоваÑÑ Ð»Ð¸ блокиÑÑÑÑие опеÑаÑии или аÑомаÑнÑе. ÐозвÑаÑÐ°ÐµÑ true
, еÑли аÑомаÑнÑе опеÑаÑии над маÑÑивами Ñ ÑказаннÑм ÑазмеÑами ÑлеменÑов бÑдÑÑ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ñ Ñ Ð¸ÑполÑзованием аппаÑаÑнÑÑ
аÑомаÑнÑÑ
опеÑаÑий (как пÑоÑивоположноÑÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑÑÑÑим). ТолÑко Ð´Ð»Ñ ÑпеÑиалиÑÑов.
Ðо SpiderMonkey 48, ÑиналÑнÑе имена API и ÑеманÑика не бÑли еÑÑ ÑеализованÑ. ÐÐ·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¼ÐµÐ¶Ð´Ñ Firefox v. 46 и v. 48:
Atomics.futexWakeOrRequeue()
и Atomics.fence()
полноÑÑÑÑ ÑÐ´Ð°Ð»ÐµÐ½Ñ (Firefox bug 1259544 и Firefox bug 1225028).Atomics.wait()
и Atomics.wake()
бÑли Ð½Ð°Ð·Ð²Ð°Ð½Ñ Atomics.futexWait()
и Atomics.futexWake()
(Firefox bug 1260910). ÐÑимеÑание: ÑÑаÑÑе имена бÑли ÑÐ´Ð°Ð»ÐµÐ½Ñ Ð² веÑÑии 49 и младÑе (Firefox bug 1262062).Atomics.OK
, Atomics.TIMEDOUT
, Atomics.NOTEQUAL
бÑли ÑдаленÑ. Atomics.wait()
меÑод ÑепеÑÑ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ ÑÑÑоки "ok", "timed-out" и "not-equal" (Firefox bug 1260835).count
меÑода Atomics.wake()
изменилÑÑ: ÑепеÑÑ Ð¾Ð½ по ÑмолÑÐ°Ð½Ð¸Ñ Ñавен +Infinity
, а не 0
(Firefox bug 1253350).RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4