π΅ ΠΠΠ’ΠΠΠ Π ΠΠΠΠ―Π’Π¬ Π JS. Π§ΠΠ‘Π’Π¬ 2.
ΠΡΠ΅ΠΌ ΠΏΡΠΈΠ²Π΅Ρ! ΠΠΈΡΡ ΠΎΠ±Π΅ΡΠ°Π½Π½ΡΡ ΡΠ°Π½Π΅Π΅ ΡΡΠ°ΡΡΡ ΠΏΡΠΎ ΠΎΠ±ΡΡΡ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ Π² JS. ΠΠΎ Π΄Π»Ρ Π½Π°ΡΠ°Π»Π° Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌΡΡ Π·Π°ΡΠ΅ΠΌ Π½Π°ΠΌ Π²ΠΎΠΎΠ±ΡΠ΅ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½ΡΠΆΠ½ΠΎ. ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ Π±ΡΠ²Π°ΡΡ Π·Π°Π΄Π°ΡΠΈ, ΠΊΠΎΠ³Π΄Π° Ρ ΠΎΠ΄Π½ΠΈΠΌΠΈ ΠΈ ΡΠ΅ΠΌΠΈ ΠΆΠ΅ Π΄Π°Π½Π½ΡΠΌΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΡ ΠΏΠΈΡΠ΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Ρ ΡΠ°ΡΡΡΡΠΎΠΌ ΡΠ΅Π°Π»ΠΈΡΡΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ²Π΅ΡΠ° ΠΈ ΠΎΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ. Π’Π°ΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²Π΅ΡΡΠΌΠ° Π·Π°ΡΡΠ°ΡΠ½Π° Π΄Π»Ρ CPU, Π½ΠΎ Π΅Ρ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°ΡΡ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ Π·Π°Π΄Π°Ρ. Π Π²ΠΎΡ ΡΡΠΎ ΠΊΠ°ΠΊ ΡΠ°Π· ΡΠΎ ΡΠ°ΠΌΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ, Π³Π΄Π΅ Π½Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΠ°Ρ ΠΏΠ°ΠΌΡΡΡ, Ρ. ΠΊ. ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΈΠ·Π±ΡΡΠΎΡΠ½ΡΠΌ, Π° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° ΠΏΠΎ Π²Π»Π°Π΄Π΅Π½ΠΈΡ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ°ΠΌ Π²Π΅ΡΡΠΈ ΡΠ°Π±ΠΎΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ.
ΠΠ°ΠΊ ΠΆΠ΅ ΡΡΠΎ ΡΠ΅ΡΠ°Π΅ΡΡΡ Π² JS?
Π JS Π΅ΡΡΡ ΠΎΡΠΎΠ±Π°Ρ ΡΡΡΡΠΊΡΡΡΠ° Π΄Π°Π½Π½ΡΡ ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΠ°Ρ SharedArrayBuffer. Π‘ Π²ΠΈΠ΄Ρ ΡΡΠ° ΡΡΡΡΠΊΡΡΡΠ° ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆΠ° Π½Π° ΠΎΠ±ΡΡΠ½ΡΠΉ ArrayBuffer, Ρ. Π΅. Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π½Π΅ΠΉ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠ².
Π’Π°ΠΊΠΆΠ΅, Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ ΡΡΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ, Ρ ΡΠ΅Π»Π΅Π²ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ HTTP Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ.
ΠΡΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Π½ΡΠΆΠ½Ρ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΡ Π°ΡΠ°ΠΊ ΡΠΈΠΏΠ° Spectre, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π·Π±ΡΠ΄ΠΎΡΠ°ΠΆΠΈΠ»ΠΈ Π²Π΅ΡΡ ΠΌΠΈΡ Π² 2018 Π³ΠΎΠ΄Ρ. ΠΠ΄Π½Π°ΠΊΠΎ, Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² Node.js Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΠΈΠ»ΠΈ ΡΠ»Π°Π³ΠΈ Π½Π΅ Π½ΡΠΆΠ½Ρ.
ΠΠΊΠ΅ΠΉ, Π·Π½Π°ΡΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Ρ ΡΠ°ΠΊΠΎΠΉ Π²ΠΎΡ Π±ΡΡΠ΅Ρ ΠΈΠ· ΠΏΠΎΡΠΎΠΊΠ° Π² ΠΏΠΎΡΠΎΠΊ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΈΡΠ°ΡΡ ΠΈ ΠΏΠΈΡΠ°ΡΡ Π² Π½Π΅Π³ΠΎ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ? Π Π°Π·Π²Π΅ ΡΡΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π³ΠΎΠ½ΠΊΠ°ΠΌ? π€
ΠΡ, Π΅ΡΠ»ΠΈ Ρ Π½Π°Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ ΡΠΈΡΡΠ°ΡΠΈΡ, ΡΡΠΎ Π΅ΡΡΡ Ρ ΠΎΡΡ Π±Ρ ΠΎΠ΄ΠΈΠ½ ΠΏΠΈΡΠ°ΡΠ΅Π»Ρ ΠΈ ΡΠΈΡΠ°ΡΠ΅Π»Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠΉ ΠΆΠ΅ ΡΡΠ΅ΠΉΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ ΠΈΠ· ΡΠ°Π·Π½ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ², ΡΠΎ Ρ Π½Π°Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ Π³ΠΎΠ½ΠΊΠ°. Π ΡΡΠΎ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΡΡΠΎ ΡΠ°ΠΌΠΈ ΠΏΠΎ ΡΠ΅Π±Π΅ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, Π½Π΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡ ΠΊ Π³ΠΎΠ½ΠΊΠ°ΠΌ - ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΊΡΠΎ-ΡΠΎ Π½Π°ΡΠΈΠ½Π°Π΅ΠΌ ΠΌΠ΅Π½ΡΡΡ ΡΡΠΈ ΡΠ°ΠΌΡΠ΅ Π΄Π°Π½Π½ΡΠ΅.
ΠΠΎ Π² ΡΠ»ΡΡΠ°Π΅ Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ Π²ΡΠ΅ Π΅ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π΅Π΅, Ρ.ΠΊ. ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡΡ Π½Π΅ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΡΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎ Π΅ΡΠ»ΠΈ Π΄Π΅Π»Π°ΡΡ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½Ρ ΡΠΈΡΠ»Π° ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ²?
Π ΡΡΡ ΡΠΈΡΡΠ°ΡΠΈΠΉ ΠΌΠ°ΡΡΠ°: ΡΠΈΡΠ»ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡΡΡ, Π½ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π±ΡΠ΄Π΅Ρ Π½Π΅ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌ; ΡΠΈΡΠ»ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡΡ, Π½ΠΎ Π½Π° ΠΌΠ΅Π½ΡΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ... ΠΠΎΡΠ΅ΠΌΡ ΡΠ°ΠΊΠΎΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ?
ΠΡΠ΅ Π΄Π΅Π»ΠΎ Π² Π°ΡΠΎΠΌΠ°ΡΠ½ΠΎΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ: ΡΠΎ, ΡΡΠΎ Π΄Π»Ρ Π½Π°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΊΠ°Π·Π°ΡΡΡΡ Π°ΡΠΎΠΌΠ°ΡΠ½ΡΠΌ, ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΡΡΠΎΡΡΡ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ. Π ΡΠ΅ΠΏΠ΅ΡΡ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΠΊ ΡΡΠΎΠΌΡ, ΡΡΠΎ Π½Π°ΡΠΈ ΠΏΠΎΡΠΎΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ. Π, Π½Π°ΠΊΠΎΠ½Π΅Ρ, ΠΊΠΎΠ΄ ΠΊΠΎΡΠΎΡΡΠΌ ΠΌΡ ΠΏΠΈΡΠ΅ΠΌ, ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π½Π΅ Π² ΡΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, Π² ΠΊΠ°ΠΊΠΎΠΌ ΠΌΡ Π΅Π³ΠΎ Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ. ΠΠ²ΡΡΠΈΡ ΡΡΡΠ°Π½Π½ΠΎ?
ΠΠΎ ΠΏΡΠ°Π²Π΄Π° Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ ΠΌΠΎΠ³ΡΡ ΠΌΠ΅Π½ΡΡΡ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ, ΡΡΠΎΠ±Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΡΡΡΡΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°. Π Π΅ΡΠ»ΠΈ Π² ΠΎΠ±ΡΡΠ½ΡΠΌ ΠΎΠ΄Π½ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅, ΡΡΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡΠΌ, ΡΠΎ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ ΡΠΆΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π½ΠΈΠΊΠ°ΠΊΠΈΡ Π³Π°ΡΠ°Π½ΡΠΈΠΉ Π½Π΅Ρ.
π¨ ΠΡΠ΅ ΡΡΠΎ Π·Π²ΡΡΠΈΡ ΡΡΡΠ°ΡΠ½ΠΎ?
ΠΡ ΡΠ°ΠΊ ΠΈ Π΅ΡΡΡ. ΠΠΎΠΎΠ±ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ - ΡΡΠΎ ΡΠ΅ΠΌΠ°, ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠ²ΡΡΠΈΡΡ Π½Π΅ ΠΎΠ΄Π½Ρ ΠΊΠ½ΠΈΠ³Ρ ΠΈΠ»ΠΈ ΠΊΡΡΡ. ΠΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ ΠΏΡΠΎ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΏΠ°ΠΌΡΡΠΈ; Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ; ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ ΠΏΠΎ ΡΠΈΠΏΡ RWLock ΠΈΠ»ΠΈ Mutex ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅.
ΠΠΎ ΠΌΡ ΠΆΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΏΡΠΎ JS ΠΈ Π² JS Ρ Π½Π°Ρ Π΅ΡΡΡ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠΉ ΠΏΡΠΈΠΌΠΈΡΠΈΠ² Atomics, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ API ΠΊΠ°ΠΊ Π΄Π»Ρ Π°ΡΠΎΠΌΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ Π² SharedArrayBuffer, ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ ΠΏΠΎΡΠΎΠΊΠΎΠ². Π ΡΠ°ΠΊΠΆΠ΅ Π²Π²ΠΎΠ΄ΠΈΡ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ, ΡΡΠΎ Π»ΡΠ±ΠΎΠΉ ΠΊΠΎΠ΄ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π²ΡΡΠ΅ Π°ΡΠΎΠΌΠΈΠΊΠ° ΡΠΎΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡΡ ΡΠ°Π½ΡΡΠ΅, Π° ΡΠΎΡ, ΡΡΠΎ Π½ΠΈΠΆΠ΅ - ΠΏΠΎΠ·ΠΆΠ΅.
ΠΡΠΈΠ²Π΅Π΄Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈ Π±ΡΠ΄Ρ Π½Π° ΡΠ΅Π³ΠΎΠ΄Π½Ρ Π·Π°ΠΊΡΡΠ³Π»ΡΡΡΡΡ.
ΠΠ° ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π·Π³Π»ΡΠ΄ Π²ΡΠ΅ ΠΏΡΠΎΡΡΠΎ, Π½ΠΎ, Π²ΠΎΠΎΠ±ΡΠ΅, Atomics - ΡΡΠΎ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠΈΡΠΏΠΈΡΠΈΠΊ, ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΡΡΠΎΡΡΡΡ ΡΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΠ³ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Ρ.
ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ Ρ ΡΠ°Π·Π±Π΅ΡΡ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΡΠ²ΠΎΡΠΌ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΠΎΡΡΠ΅. ΠΠΎ Π΅ΡΠ»ΠΈ ΡΠ΅Π±Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π° ΡΠ΅ΠΌΠ° ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ Π² JS, ΡΠΎ ΠΏΡΠΈΠ³Π»Π°ΡΠ°Ρ Π½Π° ΡΠ²ΠΎΠΉ Π°Π²ΡΠΎΡΡΠΊΠΈΠΉ ΠΊΡΡΡ CS Π²ΠΎ Frontend - https://kobezzza.ru/, Π³Π΄Π΅ ΡΡΠΎΠΉ ΡΠ΅ΠΌΠ΅ ΠΏΠΎΡΠ²ΡΡΠ΅Π½ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠΈΠΊΠ» Π»Π΅ΠΊΡΠΈΠΉ.
ΠΡΠ΅ΠΌ ΠΏΡΠΈΠ²Π΅Ρ! ΠΠΈΡΡ ΠΎΠ±Π΅ΡΠ°Π½Π½ΡΡ ΡΠ°Π½Π΅Π΅ ΡΡΠ°ΡΡΡ ΠΏΡΠΎ ΠΎΠ±ΡΡΡ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ Π² JS. ΠΠΎ Π΄Π»Ρ Π½Π°ΡΠ°Π»Π° Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌΡΡ Π·Π°ΡΠ΅ΠΌ Π½Π°ΠΌ Π²ΠΎΠΎΠ±ΡΠ΅ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½ΡΠΆΠ½ΠΎ. ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ Π±ΡΠ²Π°ΡΡ Π·Π°Π΄Π°ΡΠΈ, ΠΊΠΎΠ³Π΄Π° Ρ ΠΎΠ΄Π½ΠΈΠΌΠΈ ΠΈ ΡΠ΅ΠΌΠΈ ΠΆΠ΅ Π΄Π°Π½Π½ΡΠΌΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΡ ΠΏΠΈΡΠ΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Ρ ΡΠ°ΡΡΡΡΠΎΠΌ ΡΠ΅Π°Π»ΠΈΡΡΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ²Π΅ΡΠ° ΠΈ ΠΎΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ. Π’Π°ΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²Π΅ΡΡΠΌΠ° Π·Π°ΡΡΠ°ΡΠ½Π° Π΄Π»Ρ CPU, Π½ΠΎ Π΅Ρ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°ΡΡ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ Π·Π°Π΄Π°Ρ. Π Π²ΠΎΡ ΡΡΠΎ ΠΊΠ°ΠΊ ΡΠ°Π· ΡΠΎ ΡΠ°ΠΌΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ, Π³Π΄Π΅ Π½Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΠ°Ρ ΠΏΠ°ΠΌΡΡΡ, Ρ. ΠΊ. ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΈΠ·Π±ΡΡΠΎΡΠ½ΡΠΌ, Π° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° ΠΏΠΎ Π²Π»Π°Π΄Π΅Π½ΠΈΡ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ°ΠΌ Π²Π΅ΡΡΠΈ ΡΠ°Π±ΠΎΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ.
ΠΠ°ΠΊ ΠΆΠ΅ ΡΡΠΎ ΡΠ΅ΡΠ°Π΅ΡΡΡ Π² JS?
Π JS Π΅ΡΡΡ ΠΎΡΠΎΠ±Π°Ρ ΡΡΡΡΠΊΡΡΡΠ° Π΄Π°Π½Π½ΡΡ ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΠ°Ρ SharedArrayBuffer. Π‘ Π²ΠΈΠ΄Ρ ΡΡΠ° ΡΡΡΡΠΊΡΡΡΠ° ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆΠ° Π½Π° ΠΎΠ±ΡΡΠ½ΡΠΉ ArrayBuffer, Ρ. Π΅. Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π½Π΅ΠΉ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠ².
const buffer = new SharedArrayBuffer(1024);
const arr = new Uint8Array(buffer);
arr[0] = 1;
console.log(arr[0]);
Π’Π°ΠΊΠΆΠ΅, Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ ΡΡΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ, Ρ ΡΠ΅Π»Π΅Π²ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ HTTP Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ.
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp ΠΈΠ»ΠΈ credentialless.
ΠΡΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Π½ΡΠΆΠ½Ρ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΡ Π°ΡΠ°ΠΊ ΡΠΈΠΏΠ° Spectre, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π·Π±ΡΠ΄ΠΎΡΠ°ΠΆΠΈΠ»ΠΈ Π²Π΅ΡΡ ΠΌΠΈΡ Π² 2018 Π³ΠΎΠ΄Ρ. ΠΠ΄Π½Π°ΠΊΠΎ, Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² Node.js Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΠΈΠ»ΠΈ ΡΠ»Π°Π³ΠΈ Π½Π΅ Π½ΡΠΆΠ½Ρ.
ΠΠΊΠ΅ΠΉ, Π·Π½Π°ΡΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Ρ ΡΠ°ΠΊΠΎΠΉ Π²ΠΎΡ Π±ΡΡΠ΅Ρ ΠΈΠ· ΠΏΠΎΡΠΎΠΊΠ° Π² ΠΏΠΎΡΠΎΠΊ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΈΡΠ°ΡΡ ΠΈ ΠΏΠΈΡΠ°ΡΡ Π² Π½Π΅Π³ΠΎ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ? Π Π°Π·Π²Π΅ ΡΡΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π³ΠΎΠ½ΠΊΠ°ΠΌ? π€
ΠΡ, Π΅ΡΠ»ΠΈ Ρ Π½Π°Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ ΡΠΈΡΡΠ°ΡΠΈΡ, ΡΡΠΎ Π΅ΡΡΡ Ρ ΠΎΡΡ Π±Ρ ΠΎΠ΄ΠΈΠ½ ΠΏΠΈΡΠ°ΡΠ΅Π»Ρ ΠΈ ΡΠΈΡΠ°ΡΠ΅Π»Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠΉ ΠΆΠ΅ ΡΡΠ΅ΠΉΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ ΠΈΠ· ΡΠ°Π·Π½ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ², ΡΠΎ Ρ Π½Π°Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ Π³ΠΎΠ½ΠΊΠ°. Π ΡΡΠΎ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΡΡΠΎ ΡΠ°ΠΌΠΈ ΠΏΠΎ ΡΠ΅Π±Π΅ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, Π½Π΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡ ΠΊ Π³ΠΎΠ½ΠΊΠ°ΠΌ - ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΊΡΠΎ-ΡΠΎ Π½Π°ΡΠΈΠ½Π°Π΅ΠΌ ΠΌΠ΅Π½ΡΡΡ ΡΡΠΈ ΡΠ°ΠΌΡΠ΅ Π΄Π°Π½Π½ΡΠ΅.
ΠΠΎ Π² ΡΠ»ΡΡΠ°Π΅ Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ Π²ΡΠ΅ Π΅ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π΅Π΅, Ρ.ΠΊ. ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡΡ Π½Π΅ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΡΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎ Π΅ΡΠ»ΠΈ Π΄Π΅Π»Π°ΡΡ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½Ρ ΡΠΈΡΠ»Π° ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ²?
Π ΡΡΡ ΡΠΈΡΡΠ°ΡΠΈΠΉ ΠΌΠ°ΡΡΠ°: ΡΠΈΡΠ»ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡΡΡ, Π½ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π±ΡΠ΄Π΅Ρ Π½Π΅ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌ; ΡΠΈΡΠ»ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡΡ, Π½ΠΎ Π½Π° ΠΌΠ΅Π½ΡΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ... ΠΠΎΡΠ΅ΠΌΡ ΡΠ°ΠΊΠΎΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ?
ΠΡΠ΅ Π΄Π΅Π»ΠΎ Π² Π°ΡΠΎΠΌΠ°ΡΠ½ΠΎΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ: ΡΠΎ, ΡΡΠΎ Π΄Π»Ρ Π½Π°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΊΠ°Π·Π°ΡΡΡΡ Π°ΡΠΎΠΌΠ°ΡΠ½ΡΠΌ, ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΡΡΠΎΡΡΡ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ. Π ΡΠ΅ΠΏΠ΅ΡΡ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΠΊ ΡΡΠΎΠΌΡ, ΡΡΠΎ Π½Π°ΡΠΈ ΠΏΠΎΡΠΎΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ. Π, Π½Π°ΠΊΠΎΠ½Π΅Ρ, ΠΊΠΎΠ΄ ΠΊΠΎΡΠΎΡΡΠΌ ΠΌΡ ΠΏΠΈΡΠ΅ΠΌ, ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π½Π΅ Π² ΡΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, Π² ΠΊΠ°ΠΊΠΎΠΌ ΠΌΡ Π΅Π³ΠΎ Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ. ΠΠ²ΡΡΠΈΡ ΡΡΡΠ°Π½Π½ΠΎ?
ΠΠΎ ΠΏΡΠ°Π²Π΄Π° Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ ΠΌΠΎΠ³ΡΡ ΠΌΠ΅Π½ΡΡΡ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ, ΡΡΠΎΠ±Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΡΡΡΡΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°. Π Π΅ΡΠ»ΠΈ Π² ΠΎΠ±ΡΡΠ½ΡΠΌ ΠΎΠ΄Π½ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅, ΡΡΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡΠΌ, ΡΠΎ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ ΡΠΆΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π½ΠΈΠΊΠ°ΠΊΠΈΡ Π³Π°ΡΠ°Π½ΡΠΈΠΉ Π½Π΅Ρ.
π¨ ΠΡΠ΅ ΡΡΠΎ Π·Π²ΡΡΠΈΡ ΡΡΡΠ°ΡΠ½ΠΎ?
ΠΡ ΡΠ°ΠΊ ΠΈ Π΅ΡΡΡ. ΠΠΎΠΎΠ±ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ - ΡΡΠΎ ΡΠ΅ΠΌΠ°, ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠ²ΡΡΠΈΡΡ Π½Π΅ ΠΎΠ΄Π½Ρ ΠΊΠ½ΠΈΠ³Ρ ΠΈΠ»ΠΈ ΠΊΡΡΡ. ΠΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ ΠΏΡΠΎ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΏΠ°ΠΌΡΡΠΈ; Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ; ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ ΠΏΠΎ ΡΠΈΠΏΡ RWLock ΠΈΠ»ΠΈ Mutex ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅.
ΠΠΎ ΠΌΡ ΠΆΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΏΡΠΎ JS ΠΈ Π² JS Ρ Π½Π°Ρ Π΅ΡΡΡ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠΉ ΠΏΡΠΈΠΌΠΈΡΠΈΠ² Atomics, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ API ΠΊΠ°ΠΊ Π΄Π»Ρ Π°ΡΠΎΠΌΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ Π² SharedArrayBuffer, ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ ΠΏΠΎΡΠΎΠΊΠΎΠ². Π ΡΠ°ΠΊΠΆΠ΅ Π²Π²ΠΎΠ΄ΠΈΡ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ, ΡΡΠΎ Π»ΡΠ±ΠΎΠΉ ΠΊΠΎΠ΄ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π²ΡΡΠ΅ Π°ΡΠΎΠΌΠΈΠΊΠ° ΡΠΎΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡΡ ΡΠ°Π½ΡΡΠ΅, Π° ΡΠΎΡ, ΡΡΠΎ Π½ΠΈΠΆΠ΅ - ΠΏΠΎΠ·ΠΆΠ΅.
ΠΡΠΈΠ²Π΅Π΄Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈ Π±ΡΠ΄Ρ Π½Π° ΡΠ΅Π³ΠΎΠ΄Π½Ρ Π·Π°ΠΊΡΡΠ³Π»ΡΡΡΡΡ.
const buffer = new SharedArrayBuffer(16);
const arr = new Uint8Array(buffer);
console.log(Atomics.store(arr, 0, 2)); // 2
console.log(Atomics.load(arr, 0)); // 2
ΠΠ° ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π·Π³Π»ΡΠ΄ Π²ΡΠ΅ ΠΏΡΠΎΡΡΠΎ, Π½ΠΎ, Π²ΠΎΠΎΠ±ΡΠ΅, Atomics - ΡΡΠΎ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠΈΡΠΏΠΈΡΠΈΠΊ, ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΡΡΠΎΡΡΡΡ ΡΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΠ³ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Ρ.
ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ Ρ ΡΠ°Π·Π±Π΅ΡΡ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΡΠ²ΠΎΡΠΌ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΠΎΡΡΠ΅. ΠΠΎ Π΅ΡΠ»ΠΈ ΡΠ΅Π±Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π° ΡΠ΅ΠΌΠ° ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ Π² JS, ΡΠΎ ΠΏΡΠΈΠ³Π»Π°ΡΠ°Ρ Π½Π° ΡΠ²ΠΎΠΉ Π°Π²ΡΠΎΡΡΠΊΠΈΠΉ ΠΊΡΡΡ CS Π²ΠΎ Frontend - https://kobezzza.ru/, Π³Π΄Π΅ ΡΡΠΎΠΉ ΡΠ΅ΠΌΠ΅ ΠΏΠΎΡΠ²ΡΡΠ΅Π½ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠΈΠΊΠ» Π»Π΅ΠΊΡΠΈΠΉ.