πŸ’¬ КакиС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ распространСнныС ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ конкурСнтности Π² Go?



ΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ конкурСнтности Π² Go ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ строятся Π²ΠΎΠΊΡ€ΡƒΠ³ Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½ ΠΈ ΠΊΠ°Π½Π°Π»ΠΎΠ².



Π’ΠΎΡ‚ нСсколько основных ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ² конкурСнтности, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² Go:



πŸ”Έ Worker pools: ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ созданиС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½ (Π²ΠΎΡ€ΠΊΠ΅Ρ€ΠΎΠ²) для выполнСния Π·Π°Π΄Π°Ρ‡ ΠΈΠ· ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ.



πŸ”Έ Fan-in (собираСт Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· мноТСства источников) ΠΈ Fan-out (распрСдСляСт Π·Π°Π΄Π°Ρ‡ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ нСсколькими ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ).



πŸ”Έ Pipeline: организация Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½ Π² ΡΠ΅Ρ€ΠΈΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Π³Π΄Π΅ каТдая Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° выполняСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡Ρƒ. КаТдая стадия ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π° Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ°Π½Π°Π»Π° ΠΈ ΠΏΠΈΡˆΠ΅Ρ‚ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ, формируя Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ….



πŸ”Έ Publish/Subscribe: созданиС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ΄Π½ΠΈ Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ (ΠΈΠ·Π΄Π°Ρ‚Π΅Π»ΠΈ) ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΡŽΡ‚ сообщСния Π² ΠΊΠ°Π½Π°Π», Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ (подписчики) Ρ‡ΠΈΡ‚Π°ΡŽΡ‚ эти сообщСния.



πŸ”Έ Context passing: использованиС ΠΏΠ°ΠΊΠ΅Ρ‚Π° context для управлСния ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ ΠΈ ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½. Π­Ρ‚ΠΎ особСнно ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π² сСтСвых прилоТСниях ΠΈ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ запросов ΠΊ Π±Π°Π·Π°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ….



πŸ”Έ Errgroup: использованиС ΠΏΠ°ΠΊΠ΅Ρ‚Π° errgroup для ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ выполнСния Π·Π°Π΄Π°Ρ‡ с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибок ΠΈ ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ всСх Π·Π°Π΄Π°Ρ‡ ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ошибки.



πŸ”Έ Select statement: использованиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° select для оТидания Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с ΠΊΠ°Π½Π°Π»Π°ΠΌΠΈ. select позволяСт Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π΅ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ нСсколько ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡΡΡŒ Π΄ΠΎ готовности ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π½ΠΈΡ….



πŸ‘‰ ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅: Π΄ΠΎΠΊΠ»Π°Π΄ Go Concurrency Patterns Π ΠΎΠ±Π° Пайка (слайды) ΠΈ Advanced Go Concurrency Patterns (слайды) Sameer Ajmani