π Π ΡΠ΅ΠΌΡ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΎΠ±ΠΈΠ»ΠΈΠ΅ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠ½ΠΎΡΡΠΈ Π² ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅ Go?
Π ΡΡΠ°ΡΡΠ΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΠΏΡΠΈ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠ½ΠΎΠΌ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΊ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ ΡΠ΅ΠΌ ΠΆΠ΅ Π΄Π°Π½Π½ΡΠΌ.
ΠΡΠΎΠ±Π»Π΅ΠΌΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ
Π Π½Π°ΡΠ΅ Π²ΡΠ΅ΠΌΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π΄Π΅ΡΡΡΠΊΠΈ ΠΊΡΡΠΏΠ½ΡΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ, ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡΠΈΡ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² ΠΏΠΎ Π²ΡΠ΅ΠΌΡ ΠΌΠΈΡΡ ΠΈ ΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΡ ΠΈΠΌ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΡΠ»ΡΠ³ΠΈ. ΠΡΠΈ ΡΡΠΎΠΌ, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Go Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ²ΠΎΠΈΡ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ², Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΡΠΎΠΉ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π°Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΡΡ ΡΠ΄Π΅Ρ. Π ΠΏΡΠΈΠΌΠ΅ΡΡ, ΠΌΠΎΠ½ΠΎΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ·ΡΠΈΠΊΠ° Uber ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΠΊΠΎΠ»ΠΎ 46 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² ΡΡΡΠΎΠΊ ΠΊΠΎΠ΄Π° ΠΈ ΠΎΠΊΠΎΠ»ΠΎ 2100 ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ². ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ·ΡΠΊΠ° Go Π΄Π»Ρ ΡΡΠΈΡ ΡΠ΅Π»Π΅ΠΉ ΠΎΠ±ΡΡΠ»ΠΎΠ²Π»Π΅Π½ΠΎ ΡΡΠ΄ΠΎΠΌ Π²Π΅ΡΠΎΠΌΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²: Π³ΡΠ°ΠΌΠΎΡΠ½ΠΎ Π½Π°ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌ, ΠΏΡΠΎΡΡΠ°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΠ±ΠΎΡΠΊΠΈ ΠΌΡΡΠΎΡΠ°, ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΠΈΡΡΠΈΡΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΊ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΡ, ΠΎΡΠ»ΠΈΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π°, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ°ΡΡΡΡΠ΅Π΅ Ρ ΠΊΠ°ΠΆΠ΄ΡΠΌ Π΄Π½Π΅ΠΌ, ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ².
Π ΡΠ²ΠΎΠ΅ΠΉ ΡΠ°Π±ΠΎΡΠ΅, Go-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π»Π΅Π³ΠΊΠΎΠ²Π΅ΡΠ½ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ β Π³ΠΎΡΡΡΠΈΠ½Ρ. Π’Π°ΠΊ Π²ΠΎΡ, ΠΏΡΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠΌ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π³ΠΎΡΡΡΠΈΠ½ ΠΊ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ ΡΠ΅ΠΌ ΠΆΠ΅ Π΄Π°Π½Π½ΡΠΌ ΠΈ Π½Π°ΡΠΈΠ½Π°ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠ΅ Π² Go β ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ Π³ΠΎΠ½ΠΊΠΈ (Race conditions). Π ΡΡΠΈΡΡΠ²Π°Ρ ΠΎΠ±ΠΈΠ»ΠΈΠ΅ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² β ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΡΠ°Π±. Π ΡΡΠ°ΡΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ, ΡΡΠΎ ΡΡΠΎ Π·Π° Π½Π°ΠΏΠ°ΡΡΡ ΡΠ°ΠΊΠ°Ρ ΠΈ ΠΊΠ°ΠΊ ΠΎΡ Π½Π΅Π΅ ΠΈΠ·Π±Π°Π²ΠΈΡΡΡΡ.
ΠΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌ ΠΈ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠ½ΠΎΡΡΡ
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΎ Π³ΠΎΠ½ΠΊΠ°Ρ Π΄Π°Π½Π½ΡΡ (data races), Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΏΠΎΠΌΡΠ½ΡΡΡ ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° ΠΈ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠ½ΠΎΡΡΠΈ, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ, ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ ΠΊΠ°ΠΊ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ. ΠΡΠΈ ΠΏΠΎΠ½ΡΡΠΈΡ ΡΡ ΠΎΠΆΠΈ, Π½ΠΎ ΠΈΠΌΠ΅ΡΡ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΡ β Β«Concurrency is not Parallelism!Β». Π‘ΡΡΡ ΡΡΠΎΠ³ΠΎ ΡΠ°ΡΡ ΠΎΠΆΠ΅Π³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠ½ΠΎΡΡΡ β ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ΠΈΠΊΠ° ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌ β ΡΡΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π΅Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
ΠΠΎΠ²ΠΎΡΠΈΡΡ ΠΎ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠ½ΠΎΡΡΠΈ ΠΌΠΎΠΆΠ½ΠΎ, ΠΊΠΎΠ³Π΄Π° ΡΠ°Π±ΠΎΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΠΌΠΈ Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ², Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΡ ΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ Π΄ΡΡΠ³ ΠΎΡ Π΄ΡΡΠ³Π°. ΠΡΠΈ ΡΡΠΎΠΌ, Π΄Π»Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ, ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ.
Π ΠΎΠ΄Π½ΠΎΡΠ΄Π΅ΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠ½ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΈΠΌΠ΅Π΅Ρ ΠΌΠΎΠ΄Π΅Π»Ρ, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ, ΡΠΎ Π΅ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΡΠ°Π·Ρ Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ, Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΈΡ Π²ΡΠ΅ Π²ΠΌΠ΅ΡΡΠ΅, Π²Π΅Π΄Ρ ΡΠ΄ΡΠΎ Π²ΡΠ΅Π³ΠΎ ΠΎΠ΄Π½ΠΎ. ΠΡΠΈΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΎΠ½ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ Π±ΡΡΡΡΠΎ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π²ΠΏΠ΅ΡΠ°ΡΠ»Π΅Π½ΠΈΠ΅, ΡΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ Π·Π°Π²Π΅ΡΡΠ°ΡΡΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ.
ΠΡΠΈ ΡΡΠΎΠΌ Π³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΎ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ΅ ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ, Π²Π΅Π΄Ρ Π·Π°Π΄Π°ΡΠΈ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π²ΠΌΠ΅ΡΡΠ΅ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠ° Ρ Π½Π°Ρ β ΠΎΠ΄Π½ΠΎΡΠ΄Π΅ΡΠ½Π°Ρ.
ΠΡΠΎΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΈΠΌΠ΅Π΅ΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΡ ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ β Π½Π°Π΄ΠΎ Π΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΊΠΎΠ΄ Π²ΡΠΏΠΎΠ»Π½ΡΠ»ΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ, Π° ΡΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠ½ΠΎΡΡΠΈ. ΠΠ΅Π΄Ρ ΠΏΡΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΠΈ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΈΠ·Π°ΠΉΠ½Π° ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΡΡ Π½Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π΅ Π²ΡΠΉΠ΄Π΅Ρ. Π Π²ΠΎΡ ΡΠ°ΠΌΠ° ΠΏΠΎ ΡΠ΅Π±Π΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠ½ΠΎΡΡΠΈ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π½ΡΠΆΠ΄Π°Π΅ΡΡΡ Π² ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ΅, Π²Π΅Π΄Ρ Π΅ΡΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠΏΠΎΡΠΎΠ±Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ΄ΡΠ°Ρ , ΠΎΠ½Π° ΡΠΏΠΎΠΊΠΎΠΉΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°ΡΡ ΠΈ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ.
Π‘ΠΎΡΡΠΎΡΠ½ΠΈΡ Π³ΠΎΠ½ΠΊΠΈ Π² Go
ΠΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΎΡΠ½ΠΎΡΡΡΠΈΠ΅ΡΡ ΠΊ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π³ΠΎΠ½ΠΊΠΈ, Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΡΡΠ΄Π½ΠΎ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΡ ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ΠΈ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΊ Π³ΡΡΠΏΠΏΠ΅ ΡΠ°ΠΌΡΡ Π½Π΅ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ°ΡΡΠΎ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΊΠΎΠ΄Π° ΠΎΠ½ΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡ Π·Π°Π³Π°Π΄ΠΎΡΠ½ΡΠ΅ ΡΠ±ΠΎΠΈ, ΠΏΠΎΠ½ΡΡΡ ΠΏΡΠΈΡΠΎΠ΄Ρ ΠΊΠΎΡΠΎΡΡΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈ ΠΌΠ°ΡΠ΅ΡΡΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ. ΠΡΠΈ ΡΡΠΎΠΌ, Π΄Π°ΠΆΠ΅ ΡΠΏΡΠΎΡΠ°ΡΡΠΈΠΉ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΈΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠ½ΠΎΡΡΠΈ, Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ Race conditions. Π ΡΠ°ΠΊΠΈΡ ΡΠ»ΡΡΠ°ΡΡ , ΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ° ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΎΡΡΠΎΡΠΎΠΆΠ½ΠΎΡΡΡ, Π±ΠΎΠ»ΡΡΠ΅ ΡΡΠ΅ΡΠ΄ΠΈΡ ΠΈ Π³ΡΠ°ΠΌΠΎΡΠ½ΠΎΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅.
ΠΠΎΠ½ΠΊΠ° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π΄Π²Π΅ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Π³ΠΎΡΡΡΠΈΠ½Ρ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ ΡΠ΅ΠΌ ΠΆΠ΅ Π΄Π°Π½Π½ΡΠΌ. Π‘Π±ΠΎΠΈ, Π²ΡΠ·Π²Π°Π½Π½ΡΠ΅ Π³ΠΎΠ½ΠΊΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ Go, ΠΏΠΎΠ²ΡΠΎΡΡΡΡΡΡ ΠΈ Π·Π°ΡΠ°ΡΡΡΡ ΡΠ½ΠΈΠΆΠ°ΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ Π½Π΅ΡΠ΄ΠΎΠ±ΡΡΠ²Π° Π²Π°ΡΠΈΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌ ΠΈ ΠΏΠΎΠ²Π»ΠΈΡΠ΅Ρ Π½Π° ΠΈΡ Π΄ΠΎΡ ΠΎΠ΄. ΠΠΎΡΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΡΡΠ΄Π½ΠΎ ΠΎΡΠ»Π°ΠΆΠΈΠ²Π°ΡΡ data races ΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½ΠΈΡ ΠΈΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠ°ΠΊΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΡΠ²Π°ΡΠΈΠ²Π½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ². ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° Π² ΠΏΠΎΠ΄ΠΎΠ·ΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΎΠ±Π»Π°ΡΡΡΡ ΠΊΠΎΠ΄Π°.
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π·Π°ΡΠ°Π½Π΅Π΅ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΎΠ΄Π° ΠΎΡΠΈΠ±ΠΎΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΠ·ΡΠΊΠ° ΡΠΎΠ·Π΄Π°Π»ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π», Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ Π΄Π΅ΡΠ΅ΠΊΡΠΎΡ Π³ΠΎΠ½ΠΊΠΈ.
ΠΠ΅ΡΠ΅ΠΊΡΠΎΡ Π³ΠΎΠ½ΠΊΠΈ
ΠΠΏΠ΅ΡΠ²ΡΠ΅ ΡΡΠΎΡ Π½Π°Π±ΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π³ΠΎΠ½ΠΊΠΈ Π² Go-ΠΊΠΎΠ΄Π΅, ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ Π² Π²Π΅ΡΡΠΈΠΈ 1.1 ΠΈ ΠΏΠΎ ΡΠ΅ΠΉ Π΄Π΅Π½Ρ, ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½ΠΊΠ°Ρ Linux, OS X ΠΈ Windows Ρ 64-ΡΠ°Π·ΡΡΠ΄Π½ΡΠΌΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°ΠΌΠΈ x86.
Π ΠΎΡΠ½ΠΎΠ²Π΅ Π΄Π΅ΡΠ΅ΠΊΡΠΎΡΠ° Π»Π΅ΠΆΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ (runtime library) C/C++ β ThreadSanitizer, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠ°Ρ Π΄Π»Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ Π² ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ΅ Google ΠΈ Chromium. ΠΠ½Π΅Π΄ΡΠΈΠ»ΠΈ ΡΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ Π² Go Π² ΡΠ΅Π½ΡΡΠ±ΡΠ΅ 2012, ΠΈ ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΎΠ½Π° ΡΡΠ°Π»Π° ΡΠ°ΡΡΡΡ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΡΠ±ΠΎΡΠΊΠΈ ΠΏΠΎ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΡΡΠ»ΠΎΠ²ΠΈΠΉ Π³ΠΎΠ½ΠΊΠΈ ΠΏΡΠΈ ΠΈΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ.
Race detector Π²ΡΡΡΠΎΠ΅Π½ Π² ΡΠ΅ΠΏΠΎΡΠΊΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Go ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
- Π Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΡ
Π½Π°ΠΌ ΠΏΠΎΠ΄ΠΎΠ·ΡΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΌΠ΅ΡΡΠ°Ρ
ΠΌΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΠ»Π°Π³ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ
-race
, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ ΠΏΠΎΠ»Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΉ ΠΊ ΠΏΠ°ΠΌΡΡΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠ΄Π°, ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠ΅Π³ΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»Π΅Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΏΠ°ΠΌΡΡΠΈ. - Π ΡΠ΅ΠΌ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ,
ThreadSanitizer
ΠΈΡΠ΅Ρ Π² ΠΊΠΎΠ΄Π΅ Π½Π΅ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ ΠΎΠ±ΡΠΈΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ ΠΈ, ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ² ΡΠ°ΠΊΠΎΠ΅ Β«Π³ΡΡΠ±ΠΎΠ΅Β» ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, Π²ΡΠ΄Π°Π΅Ρ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅.
ΠΠ΅ΡΠ΅ΠΊΡΠΎΡ ΡΠΊΠΎΠ½ΡΡΡΡΠΈΡΠΎΠ²Π°Π½ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎ ΠΎΠ½ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΡ Race conditions ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΌ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΊΠΎΠ΄Π°. ΠΠΎΡΡΠΎΠΌΡ Π²Π°ΠΆΠ½ΠΎ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡ Π·Π°ΠΏΡΡΠΊ Π΄Π²ΠΎΠΈΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΈ ΡΠ΅Π°Π»ΠΈΡΡΠΈΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΠΈΡ Π½Π°Π³ΡΡΠ·ΠΊΠ°Ρ .
ΠΠΎ Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» Ρ Π΄Π΅ΡΠ΅ΠΊΡΠΎΡΠΎΠΌ Π³ΠΎΠ½ΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ ΡΠΈΠ»ΡΠ½ΠΎ Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° ΠΈ ΠΏΠ°ΠΌΡΡΠΈ, Π²ΡΠ·ΡΠ²Π°Ρ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΡ ΡΠΈΡΡΠ΅ΠΌΡ β ΠΏΠΎΡΡΠΎΠΌΡ Π½Π΅ ΡΡΠΎΠΈΡ Π΄Π΅ΡΠΆΠ°ΡΡ Π΄Π΅ΡΠ΅ΠΊΡΠΎΡ Π³ΠΎΠ½ΠΊΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠΌ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ. Π₯ΠΎΡΠΎΡΠ΅ΠΉ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΎΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ Π·Π°ΠΏΡΡΠΊ Π΅Π³ΠΎ, Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π½Π°Π³ΡΡΠ·ΠΎΡΠ½ΡΠΌΠΈ ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΌΠΈ ΡΠ΅ΡΡΠ°ΠΌΠΈ, Π²Π΅Π΄Ρ ΠΎΠ½ΠΈ, Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ²ΠΎΠ΅ΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠ½ΡΠ΅ ΡΠ°ΡΡΠΈ ΠΊΠΎΠ΄Π°.
ΠΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π΅ΡΠ΅ΠΊΡΠΎΡ Π³ΠΎΠ½ΠΊΠΈ
ΠΠ°ΠΊ ΠΌΡ ΡΠΆΠ΅ ΡΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΈ ΡΠ°Π½Π΅Π΅, Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΠΊ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΠΌΡ ΡΡΠ°ΡΡΠΊΡ ΠΊΠΎΠ΄Π° Π²ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠΉ Π΄Π΅ΡΠ΅ΠΊΡΠΎΡ Π³ΠΎΠ½ΠΊΠΈ, ΠΊ Π½Π΅ΠΌΡ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ»Π°Π³ -race
, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΏΡΠΎΡΠ΅Π½Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ» Π΄Π΅ΡΠ΅ΠΊΡΠΎΡ Π³ΠΎΠ½ΠΊΠΈ. ΠΠ΄Π΅ΡΡ ΠΎΠ½ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ° Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΌ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΎΠΌ ΠΎΡ 0 Π΄ΠΎ 1 ΡΠ΅ΠΊΡΠ½Π΄Ρ. ΠΡΠ΅ ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΡΡΡ ΠΏΡΡΡ ΡΠ΅ΠΊΡΠ½Π΄.
ΠΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ time.AfterFunc
Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Timer
Π΄Π»Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, Π° Π·Π°ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄ Reset
Π΄Π»Ρ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Timer
.
Race detector β ΠΌΠΎΡΠ½Π΅ΠΉΡΠΈΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΏΡΠΎΠ²Π΅ΡΡΡΡΠΈΠΉ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΡ Π²ΡΠ΅Ρ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΠΊ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡΠΌ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ ΠΎΡΠ½Π΅ΡΡΠΈΡΡ ΡΠΎ Π²ΡΠ΅ΠΉ ΡΠ΅ΡΡΠ΅Π·Π½ΠΎΡΡΡΡ, Π²Π΅Π΄Ρ Π»ΠΎΠΆΠ½ΡΡ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΠΉ ΠΎΠ½ Π½Π΅ Π²ΡΠ΄Π°Π΅Ρ. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π΄Π΅ΡΠ΅ΠΊΡΠΎΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡ Π»ΠΈΡΡ ΡΠ΅ Π³ΠΎΠ½ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΡΠ²ΠΈΡΡΡΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π½Π°ΠΉΡΠΈ ΠΈΡ Π½Π° ΡΡΠ°ΡΡΠΊΠ°Ρ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ.
ΠΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ ΠΏΠΎ ΡΠ΅ΠΌΠ΅
- π¨βποΈ Π’ΠΠ-11 Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΡ ΡΡΠ΅Π±Π½ΡΡ ΠΊΡΡΡΠΎΠ² ΠΏΠΎ Go
- π ΠΠΈΡΠ΅ΠΌ ΠΌΠ΅ΡΡΠ΅Π½Π΄ΠΆΠ΅Ρ Π½Π° Go Π·Π° ΡΠ°Ρ: 7 ΠΏΡΠΎΡΡΡΡ
ΡΠ°Π³ΠΎΠ² ΠΎΡ ΡΡ
ΠΎ-ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΊ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΠΎΠΌΡ ΠΎΠ±ΠΌΠ΅Π½Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ
- π 43 ΡΠ΅ΡΡΡΡΠ° Π΄Π»Ρ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ Go Π² 2021 Π³ΠΎΠ΄Ρ: ΡΠ°ΠΉΡΡ, Π±Π»ΠΎΠ³ΠΈ, ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π°, ΠΊΡΡΡΡ, ΠΊΠ°Π½Π°Π»Ρ ΠΈ ΠΊΠ½ΠΈΠ³ΠΈ