Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ

Π Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Java: ΠΊΠ°ΠΊ, Π·Π°Ρ‡Π΅ΠΌ ΠΈ стоит Π»ΠΈ? Π§Π°ΡΡ‚ΡŒ I

ИдСя Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ программирования появилась ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅Π΄Π°Π²Π½ΠΎ, Π»Π΅Ρ‚ 10 Π½Π°Π·Π°Π΄. Π§Ρ‚ΠΎ Π²Ρ‹Π·Π²Π°Π»ΠΎ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ этого ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ сСйчас ΠΎΠ½ Π² Ρ‚Ρ€Π΅Π½Π΄Π΅, рассказал Π½Π° ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ РИВ++ 2020 экспСрт ΠΈ Ρ‚Ρ€Π΅Π½Π΅Ρ€ Luxoft Training Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Бонькин.

Π’ Ρ€Π΅ΠΆΠΈΠΌΠ΅ мастСр-класса ΠΎΠ½ продСмонстрировал, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Ρ‚Π°ΠΊ Π²Π°ΠΆΠ΅Π½ Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Π²Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄, Π² Ρ‡Π΅ΠΌ минусы классичСской многопоточности, Π² ΠΊΠ°ΠΊΠΈΡ… ситуациях Π½ΡƒΠΆΠ½Π° Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ, ΠΈ Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°Ρ‚ΡŒ. А Π΅Ρ‰Π΅ описал нСдостатки Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΎ Π½ΡƒΠΆΠ½ΠΎ, обсудим ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΠΈ посмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎ Ρ‚Π°ΠΊΡƒΡŽ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ? Π’ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ пСрСстала расти ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ процСссоров, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΡƒΠΆΠ΅ Π½Π΅ приходится Ρ€Π°ΡΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ станСт ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ сама ΠΏΠΎ сСбС: Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΡ… Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°ΡΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ²Π°Ρ‚ΡŒ.

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ

На рисункС Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π³Ρ€Π°Ρ„ΠΈΠΊ частоты процСссоров рос Π² 90-Ρ…, Π° Π² Π½Π°Ρ‡Π°Π»Π΅ 2000-Ρ… частота Ρ€Π΅Π·ΠΊΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ»Π°ΡΡŒ. Оказалось, Ρ‡Ρ‚ΠΎ это Π±Ρ‹Π» ΠΏΠΎΡ‚ΠΎΠ»ΠΎΠΊ.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΆΠ΅ рост частоты остановился?

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ

Вранзисторы Π½Π°Ρ‡Π°Π»ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ максимально ΠΌΠ°Π»ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. PN-ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Π½ΠΈΡ…, получился Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ½Π΅Π½ΡŒΠΊΠΈΠΌ, насколько это Π²ΠΎΠΎΠ±Ρ‰Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. На Π³Ρ€Π°Ρ„ΠΈΠΊΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² транзисторов Π²Π½ΡƒΡ‚Ρ€ΠΈ процСссора ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ: Ρ€Π°Π·ΠΌΠ΅Ρ€ всС мСньшС ΠΈ мСньшС, транзисторов Π² процСссорС всС большС ΠΈ большС.

Вакая ΠΌΠΈΠ½ΠΈΠ°Ρ‚ΡŽΡ€ΠΈΠ·Π°Ρ†ΠΈΡ Ρ€Π°Π½ΡŒΡˆΠ΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠ»Π° ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ росла частота. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ элСктроны Π±Π΅Π³ΡƒΡ‚ со ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ свСта, Π·Π° счСт ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, врСмя, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ элСктрону, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ±Π΅ΠΆΠ°Ρ‚ΡŒ вСсь ΠΏΡƒΡ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΠΈ процСссора, ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π»ΠΎΡΡŒ. Но тСхпроцСссы ΡƒΡ‚ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ Π² физичСский ΠΏΠΎΡ‚ΠΎΠ»ΠΎΠΊ. ΠŸΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΡ‹Π²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ΅.

ΠœΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ

И ΠΌΡ‹ ΡƒΠΆΠ΅ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ: Π½Π°Ρ‡Π°Π»ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ многоядСрныС процСссоры. ВмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΠΈΡ€Π°Ρ‚ΡŒΡΡ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ процСссора Π±ΡƒΠ΄Π΅Ρ‚ расти, стали Ρ€Π°ΡΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΈΡ… количСства. Но для эффСктивного использования мноТСства процСссоров Π½ΡƒΠΆΠ½Π° ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ.

Π’Π΅ΠΌΠ° многопоточности β€” слоТная, Π½ΠΎ нСизбСТная Π² соврСмСнном ΠΌΠΈΡ€Π΅. Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ соврСмСнный ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΡ‚ 4 ядСр ΠΈ мноТСство ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². Π’ соврСмСнном ΠΌΠΎΡ‰Π½ΠΎΠΌ сСрвСрС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈ 100 ядСр. Если Π² вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ, Π²Ρ‹ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… прСимущСств. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ всС ΠΌΠΈΡ€ΠΎΠ²Ρ‹Π΅ индустрии постСпСнно Π΄Π²ΠΈΠ³Π°ΡŽΡ‚ΡΡ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ эти возмоТности.

ΠŸΡ€ΠΈ этом нас подстСрСгаСт мноТСство опасностСй. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ многопоточности слоТно: синхронизации, Π³ΠΎΠ½ΠΊΠΈ, затруднСнная ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΈ Ρ‚.Π΄. ΠΏΠΎΠΏΠΎΡ€Ρ‚ΠΈΠ»ΠΈ Π½Π΅ΠΌΠ°Π»ΠΎ ΠΊΡ€ΠΎΠ²ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ. К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅, ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ становится Π²Ρ‹ΡˆΠ΅.

Π’ Java ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ появилась Π΄Π°Π²Π½Ρ‹ΠΌ-Π΄Π°Π²Π½ΠΎ, ΠΎΠ½Π° сущСствуСт с самой ΠΏΠ΅Ρ€Π²ΠΎΠΉ вСрсии.

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ

ΠŸΠΈΡΠ°Ρ‚ΡŒ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ систСму, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Ρ‹ многопоточности, мягко говоря, слоТно. БСйчас Ρ‚Π°ΠΊ ΡƒΠΆΠ΅ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚. Π­Ρ‚ΠΎ всС Ρ€Π°Π²Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° АссСмблСрС.

Π’ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… случаях эффСкт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ приносит ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ, Π½Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Π° ΡƒΡ…ΡƒΠ΄ΡˆΠ°Π΅Ρ‚ Π΅Π΅.

Π§Ρ‚ΠΎ ΠΆΠ΅ с этим Π΄Π΅Π»Π°Ρ‚ΡŒ?

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ

ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ситуациях ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΠΎΡΡ‚ΡŒΡŽ. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Π½Π° ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ. На Π»Π΅Π²ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅ ΠΌΠ°Π»Ρ‹Ρˆ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΏΠΎΠΌΠΎΠ³Π°Ρ‚ΡŒ ΠΌΠ°ΠΌΠ΅ Π² Π΄ΠΎΠΌΠ°ΡˆΠ½ΠΈΡ… Π΄Π΅Π»Π°Ρ…. Мама достаСт ΠΈΠ· ΡΡ‚ΠΈΡ€Π°Π»ΡŒΠ½ΠΎΠΉ машинки бСльС, Π΄Π°Π΅Ρ‚ Ρ€Π΅Π±Π΅Π½ΠΊΡƒ, ΠΈ ΠΎΠ½ Π΅Π³ΠΎ ΡƒΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚ Π² ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ. Π’Π°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° 2 ΠΏΠΎΡ‚ΠΎΠΊΠ°: ΠΏΠΎΡ‚ΠΎΠΊ-ΠΌΠ°ΠΌΠ° ΠΈ ΠΏΠΎΡ‚ΠΎΠΊ-ΠΌΠ°Π»Ρ‹Ρˆ. ВСорСтичСски ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π² этом случаС Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Ρ‚ΡŒ: Π΄Π²Π° Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ ΠΎΠ΄ΠΈΠ½, вСдь ΠΌΡ‹ задСйствовали Π΄Π²Π° ядра. Но ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС Ρ‚Π°ΠΊΡƒΡŽ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ: ΠΌΠ°ΠΌΠ° ΠΏΠΎΠ΄Π°Π΅Ρ‚ Ρ€Π΅Π±Π΅Π½ΠΊΡƒ бСльС ΠΈ ΠΆΠ΄Π΅Ρ‚, ΠΏΠΎΠΊΠ° ΠΎΠ½ Π΅Π³ΠΎ ΡƒΠ»ΠΎΠΆΠΈΡ‚ Π² ΠΌΠ°ΡˆΠΈΠ½ΠΊΡƒ. Или Ρ€Π΅Π±Π΅Π½ΠΎΠΊ ΠΆΠ΄Π΅Ρ‚ бСльС ΠΎΡ‚ ΠΌΠ°ΠΌΡ‹. На Π΄Π΅Π»Π΅ ΠΎΠ½ΠΈ постоянно ΠΌΠ΅ΡˆΠ°ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Ρƒ. Плюс, Π½ΡƒΠΆΠ½ΠΎ отвСсти врСмя Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ бСлья. Мама быстрСС Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»Π°ΡΡŒ Π±Ρ‹ с бСльСм сама.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ такая ΠΆΠ΅ ситуация происходит Π² ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ρ€Π°Π±ΠΎΡ‚Π° с ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ совсСм Π½Π΅ Ρ‚Π°ΠΊ проста, ΠΊΠ°ΠΊ каТСтся. ВсС синхронизации ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ выполнСния Π½Π° самом Π΄Π΅Π»Π΅ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ ΠΊΡƒΡ‡Ρƒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

На ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅ справа ΠΎΠ΄ΠΈΠ½ΠΎΠΊΠΈΠΉ ΠΏΠ°Ρ€Π΅Π½ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΡƒΠΏΠΈΠ» сСбС Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½ΠΊΡƒ. Она стираСт, Π° ΠΎΠ½ Π² это врСмя ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΊΠ½ΠΈΠΆΠΊΡƒ. Π—Π΄Π΅ΡΡŒ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ Π΅ΡΡ‚ΡŒ прСимущСство для юноши, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ занимаСтся своим Π΄Π΅Π»ΠΎΠΌ ΠΈ ΠΏΡ€ΠΈ этом Π½Π΅ слСдит Π·Π° Ρ‚Π΅ΠΌ, Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»Π°ΡΡŒ Π»ΠΈ стирка. Когда стирка Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ, ΠΎΠ½ ΡƒΡΠ»Ρ‹ΡˆΠΈΡ‚ Π·Π²ΡƒΠΊΠΎΠ²ΠΎΠΉ сигнал ΠΈ ΠΎΡ‚Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π° Π½Π΅Π³ΠΎ. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π΅ΡΡ‚ΡŒ, Π° синхронизации Π½Π΅Ρ‚. Π‘Ρ‚Π°Π»ΠΎ Π±Ρ‹Ρ‚ΡŒ Π½Π΅Ρ‚ ΠΈ Ρ‚Ρ€Π°Ρ‚Ρ‹ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡŽ, сплошная Π²Ρ‹Π³ΠΎΠ΄Π°!

Π­Ρ‚ΠΎ ΠΈ Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ с Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΠΎΡΡ‚ΡŒΡŽ. Π•ΡΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒ, ΠΈ ΠΌΡ‹ Π΄Π°Π»ΠΈ Π΅ΠΌΡƒ Π½Π΅ Ρ‡Π°ΡΡ‚ΡŒ нашСй Π·Π°Π΄Π°Ρ‡ΠΈ, Π° свою ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ. На Π»Π΅Π²ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅ ΠΌΠ°ΠΌΠ° ΠΈ ΠΌΠ°Π»ΡŒΡ‡ΠΈΠΊ Π΄Π΅Π»Π°ΡŽΡ‚ ΠΎΠ±Ρ‰ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ, Π° Π½Π° ΠΏΡ€Π°Π²ΠΎΠΉ ΡΡ‚ΠΈΡ€Π°Π»ΡŒΠ½Π°Ρ машина ΠΈ ΠΏΠ°Ρ€Π΅Π½ΡŒ Π΄Π΅Π»Π°ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ свою. Π’ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΎΠ½ΠΈ соСдинятся: ΠΊΠΎΠ³Π΄Π° ΡΡ‚ΠΈΡ€Π°Π»ΡŒΠ½Π°Ρ машина достираСт, юноша ΠΎΡ‚Π»ΠΎΠΆΠΈΡ‚ свою ΠΊΠ½ΠΈΠ³Ρƒ. Но всС 1,5 часа, ΠΏΠΎΠΊΠ° бСльС ΡΡ‚ΠΈΡ€Π°Π»ΠΎΡΡŒ, ΠΎΠ½ прСкрасно сСбя чувствовал, Ρ‡ΠΈΡ‚Π°Π» ΠΈ Π½ΠΈ ΠΎ Ρ‡Π΅ΠΌ Π½Π΅ Π΄ΡƒΠΌΠ°Π».

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈ асинхронного ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ²

Рассмотрим 2 Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° выполнСния ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²: ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ асинхронный.

ΠŸΠΎΡ‚ΠΎΠΊΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ;

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ

ΠŸΠΎΡ‚ΠΎΠΊΠ°ΠΌ thread 1 ΠΈ 2 Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ ΠΎΠ±Ρ‰Π΅ΠΌΡƒ раздСляСмому рСсурсу. Допустим, это какая-Ρ‚ΠΎ Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ ΠΎΠ½Π° Π½Π΅ позволяСт ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΊ Π½Π΅ΠΉ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. Или позволяСт, Π½ΠΎ это сразу сниТаСт ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π΅Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹, поэтому ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌ Π»ΡƒΡ‡ΡˆΠ΅ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Π½Π΅ΠΉ ΠΏΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ. Никакой ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ здСсь Π½Π΅Ρ‚: ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌ приходится Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ. А Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΠΏΠΎΡ‚ΠΎΠΊ ΠΆΠ΄Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‚Π° ΠΎΡ‚ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ Ρ‚ΠΎΠΆΠ΅ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½ β€” такая систСма малоэффСктивна.

Π’Ρ€ΠΎΠ΄Π΅ Π±Ρ‹ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π΅ΡΡ‚ΡŒ, Π° прСимущСств ΠΎΡ‚ Π½Π΅Π΅ Π½Π΅ Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ.

ΠŸΠΎΡ‚ΠΎΠΊΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ асинхронно.

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ

Если ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΠΎΡΡ‚ΡŒ, ΠΌΡ‹ ставим Π·Π°Π΄Π°Ρ‡Ρƒ, ΠΈ ΠΎΠ½Π° выполняСтся Π³Π΄Π΅-Ρ‚ΠΎ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅. НапримСр, Π΄Ρ€ΡƒΠ³ΠΈΠΌ ядром процСссора ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ процСссором. ΠœΡ‹ поставили Π·Π°Π΄Π°Ρ‡Ρƒ ΠΈ занимаСмся Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π΄Π΅Π»Π°ΠΌΠΈ, Π° ΠΏΠΎΡ‚ΠΎΠΌ Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° эта Π·Π°Π΄Π°Ρ‡Π° Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ. ΠΠ°Ρ‡Π°Π»ΡŒΠ½ΠΈΠΊ β€” ΠΏΠΎΡ‚ΠΎΠΊ main β€” ставит Π·Π°Π΄Π°Ρ‡Ρƒ ΠŸΠ΅Ρ‚Π΅, ΠΈ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚: «Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Ρ‹ Π΅Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡˆΡŒ, ΠΏΠ΅Ρ€Π΅Π΄Π°ΠΉ КолС, Π° Ρ‚ΠΎΡ‚ послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°Π΄ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ ΠΏΡƒΡΡ‚ΡŒ Π΄ΠΎΠ»ΠΎΠΆΠΈΡ‚ ΠΌΠ½Π΅. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠŸΠ΅Ρ‚Ρ ΠΈ Коля заняты Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ, Π° Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ сотрудникам».

Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€: конкурСнция ΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌ.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΠΌ сСбС офис, ΡƒΡ‚Ρ€ΠΎ, всСм хочСтся Π²Ρ‹ΠΏΠΈΡ‚ΡŒ ΠΊΠΎΡ„Π΅. Concurrency (конкурСнция) β€” это ΠΊΠΎΠ³Π΄Π° выстраиваСтся ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΊ ΠΎΠ΄Π½ΠΎΠΉ Π½Π° всСх ΠΊΠΎΡ„Π΅ΠΌΠ°ΡˆΠΈΠ½Π΅. Π›ΡŽΠ΄ΠΈ ΠΊΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‚: Β«Π­ΠΉ, я Ρ‚ΡƒΡ‚ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ стоял!Β» β€” «НСт, я!Β». Они Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Ρƒ ΠΌΠ΅ΡˆΠ°ΡŽΡ‚.

Π’ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ΅ Π΅ΡΡ‚ΡŒ Π΄Π²Π΅ ΠΊΠΎΡ„Π΅ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ΠΈ Π΄Π²Π΅ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ: ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ стоит Π² своСй. Но всС Ρ€Π°Π²Π½ΠΎ сотрудники тратят врСмя Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΡ‚ΠΎΡΡ‚ΡŒ Ρ‚Π°ΠΌ.

Как Π½Π°ΠΉΡ‚ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для этого сцСнария, Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΠΎΡΡ‚ΡŒ?

Доставка ΠΊΠΎΡ„Π΅ прямо ΠΊ столу β€” Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π²Ρ‹ Π½Π΅ стоитС, Π½ΠΎ придСтся Π½Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π½Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Π½ΠΎΡΠΈΡ‚ΡŒ Π½Π°ΠΏΠΈΡ‚ΠΊΠΈ.

Π”Ρ€ΡƒΠ³ΠΎΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ β€” фиксированный Π³Ρ€Π°Ρ„ΠΈΠΊ. НапримСр, ΠΎΠ΄ΠΈΠ½ сотрудник ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° ΠΊΠΎΡ„Π΅ Π² 11:10, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ β€” Π² 11:20 ΠΈ Ρ‚.Π΄. Но это Π½Π΅ Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΠΎΡΡ‚ΡŒ. Π‘ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ простои, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ это Π½Π΅ полная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΊΠΎΡ„Π΅ΠΌΠ°ΡˆΠΈΠ½Ρ‹. ΠšΡ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ успСл ΠΊ своСму Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π° ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ Π½Π΅ Ρ…Π²Π°Ρ‚ΠΈΠ»ΠΎ 10 ΠΌΠΈΠ½ΡƒΡ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ сСбС ΠΊΠΎΡ„Π΅, ΠΈ Π² ΠΈΡ‚ΠΎΠ³Π΅ вСсь Π³Ρ€Π°Ρ„ΠΈΠΊ сдвигаСтся. А Ссли ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ

большиС Π·Π°Π·ΠΎΡ€Ρ‹, ΠΊΠΎΡ„Π΅ΠΌΠ°ΡˆΠΈΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅Π΄ΠΎΠ³Ρ€ΡƒΠΆΠ΅Π½Π°. И ΠΏΠΎΡ‚ΠΎΠΌ, всС хотят ΠΏΡ€ΠΈΠΉΡ‚ΠΈ Π² 10 ΡƒΡ‚Ρ€Π° ΠΈ Π²Ρ‹ΠΏΠΈΡ‚ΡŒ ΠΊΠΎΡ„Π΅, Π° это растягиваСтся Π½Π° 2 часа, ΠΈ ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ Π΅Π³ΠΎ Ρ‡Π°ΡˆΠΊΠ° достанСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² 12.

Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ β€” Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ всСх ΠΆΠ΅Π»Π°ΡŽΡ‰ΠΈΡ… Π² Β«Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒΒ». Когда ΠΊΠΎΡ„Π΅ΠΌΠ°ΡˆΠΈΠ½Π° освободится ΠΎΡ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… Π»ΡŽΠ±ΠΈΡ‚Π΅Π»Π΅ΠΉ ΠΊΠΎΡ„Π΅, Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΊΠΎΡ„Π΅ΠΌΠ°ΡˆΠΈΠ½Π΅ Π±Π΅Π· ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ. БСйчас Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… организациях Ρ‚Π°ΠΊ Π΄Π΅Π»Π°ΡŽΡ‚. НапримСр, Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°Ρ… с самовывозом. Π‘Π΅Ρ€Π΅ΡˆΡŒ Ρ‚Π°Π»ΠΎΠ½Ρ‡ΠΈΠΊ ΠΈ занимаСшься своими Π΄Π΅Π»Π°ΠΌΠΈ, Π° ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ врСмя, ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡˆΡŒ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΡˆΡŒ Ρ‚ΠΎΠ²Π°Ρ€. Π’ΠΎΡ‚ это ΠΈ Π΅ΡΡ‚ΡŒ Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΠΎΡΡ‚ΡŒ: Π½ΠΈΠΊΡ‚ΠΎ Π½ΠΈΠΊΠΎΠ³ΠΎ Π½Π΅ ΠΆΠ΄Π΅Ρ‚, всС Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ свой ΠΊΠΎΡ„Π΅ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ быстро, насколько Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. И ΠΊΠΎΡ„Π΅ΠΌΠ°ΡˆΠΈΠ½Π° Ρ‚ΠΎΠΆΠ΅ Π½Π΅ простаиваСт.

Π‘ Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΠΎΡΡ‚ΡŒΡŽ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈΡΡŒ. Но Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° ваТная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Π²Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄.

Π‘Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Π²Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄

Π’Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Π²Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄ β€” Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ. А Ρ‡Ρ‚ΠΎ ΠΆΠ΅ Ρ‚Π°ΠΊΠΎΠ΅ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Π²Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄?

Допустим, Π²Ρ‹ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…. ВызываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ это Π΄Π΅Π»Π°Π΅Ρ‚, ΠΈ ΠΎΠ½ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠΎΡ‚ΠΎΠΊ: ΠΌΡ‹ большС Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅ΠΌ, ΠΌΡ‹ ΠΆΠ΄Π΅ΠΌ. НапримСр, Π²Ρ‹ Π²Ρ‹Π·Π²Π°Π»ΠΈ readFile() ΠΈ ΠΆΠ΄Π΅Ρ‚Π΅, ΠΊΠΎΠ³Π΄Π° это Π½Π°ΠΊΠΎΠ½Π΅Ρ† ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚. ΠŸΠΎΡ‚ΠΎΠΊ блокируСтся ΠΈ Π½Π΅ прогрСссируСт: ΠΎΠ½ находится Π² ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΈ. Но Π½Π° самом Π΄Π΅Π»Π΅ процСссор Π½Π΅ занят.

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΠΏΠΎΡ‚ΠΎΠΊΠΈ:

На Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° (blocked on reading file);

На Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… (blocked on reading from DB);

На слоТных вычислСниях (blocked on heavy calculations);

На ΠΎΡ‚Π²Π΅Ρ‚Π΅ ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° (blocked on responding the client).

Π­Ρ‚Π° ситуация сродни Ρ‚ΠΎΠΉ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΏΡ€ΠΈΡˆΠ»ΠΈ Π² супСрмаркСт, Ρ‚Π°ΠΌ Π΅ΡΡ‚ΡŒ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ кассы, Π½ΠΎ систСма обслуТивания касс Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚. ΠšΠ°ΡΡΠΈΡ€ΡˆΠΈ сидят, Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ ΠΈ просто ΠΆΠ΄ΡƒΡ‚, ΠΏΠΎΠΊΠ° Π½Π° кассС сработаСт Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ.

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли всС ΠΏΠΎΡ‚ΠΎΠΊΠΈ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Ρ‹? Как ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Ρ€Π΅ΡˆΠ°ΡŽΡ‚ΡΡ Π² супСрмаркСтС?

Synchronous I/O

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ: синхронный Π²Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄. Π₯ΠΎΡ€ΠΎΡˆΠ΅Π³ΠΎ ΠΌΠ°Π»ΠΎ, Π² этом Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΊ кассам.

Π§Ρ‚ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΎΠ·Π»Π΅ касс Π½Π΅ ΡΠΎΠ±ΠΈΡ€Π°Π»ΠΈΡΡŒ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹Π΅ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ? НапримСр, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ большС касс, ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ большС ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ².

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ

Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² β€” большС касс. Π­Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚. Но Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° получаСтся Π½Π΅Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠΉ.

ΠœΡ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Π»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ касс (создали ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²), ΠΈ получаСтся, Ρ‡Ρ‚ΠΎ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ простаиваСт. На самом Π΄Π΅Π»Π΅, это Π½Π΅ просто простой: ΠΊΠΎΠ³Π΄Π° Ρƒ нас ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², Π΅ΡΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ расход рСсурсов. УвСличиваСтся расход памяти. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, процСссору Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ.

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ

Π§Π΅ΠΌ большС ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², Ρ‚Π΅ΠΌ Ρ‡Π°Ρ‰Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ. ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Ρƒ нас Π³ΠΎΡ€Π°Π·Π΄ΠΎ большС, Ρ‡Π΅ΠΌ ядСр. Допустим, Ρƒ нас 4 ядра, Π° ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΌΡ‹ насоздавали ΡΠΎΡ‚Π½ΡŽ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ΠΌ Π΄Π°Π½Π½Ρ‹Ρ…. БоотвСтствСнно, происходит ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ context switching, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠΎΡ‚ΠΎΠΊΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π»ΠΈ свою ΠΏΠΎΡ€Ρ†ΠΈΡŽ машинного Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Но Ρƒ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π΅ΡΡ‚ΡŒ минусы. Context switching Π½Π΅ бСсплатСн. Он Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ врСмя. ΠŸΠ»ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ΅ количСство ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΈΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ Π² Ρ‚Π΅ΠΎΡ€ΠΈΠΈ. Но Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΡƒΠΏΠ°Π΄ΠΎΠΊ скорости Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ рост потрСбляСмой памяти.

Π’ Java Π΅ΡΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ с этим Π±ΠΎΡ€ΠΎΡ‚ΡŒΡΡ β€” это Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΈ ΠΏΡƒΠ»Ρ‹ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² (ThreadPool). МоТно ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ количСство ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², ΠΈ Ρ‚ΠΎΠ³Π΄Π° всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ Π²ΡΡ‚Π°ΡŽΡ‚ Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ. ΠŸΡ€ΠΈ стартС Ρƒ нас ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ минимальноС количСство ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², ΠΏΠΎΡ‚ΠΎΠΌ ΠΈΡ… количСство растСт.

ВСрнСмся ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°: Ссли Π½Π°Ρ€ΠΎΠ΄Π° Π½Π΅Ρ‚, Π² ΠΌΠ°Π³Π°Π·ΠΈΠ½Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ Π΄Π²Π΅ кассы, Π° Π² час ΠΏΠΈΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π΄Π΅ΡΡΡ‚ΡŒ. Но большС ΠΌΡ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π±Ρ‹ Π°Ρ€Π΅Π½Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ ΠΈ Π½Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ людСй. А это ΡƒΠ΄Π°Ρ€ΠΈΡ‚ ΠΏΠΎ бизнСсу.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ Π±ΠΎΠ»Π΅Π΅ соврСмСнных ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°Ρ…: кассах самообслуТивания, ΠΏΡ€Π΅Π΄Π·Π°ΠΊΠ°Π·Π°Ρ… ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. А Π·Π½Π°Ρ‡ΠΈΡ‚, ΠΌΡ‹ подбираСмся ΠΊ асинхронному ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρƒ.

Asynchronous I/O

Асинхронный Π²Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄ извСстСн достаточно Π΄Π°Π²Π½ΠΎ, вСдь Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΠΎΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ°, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ с самым ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌ инструмСнтом Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°. А Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌ дСвайсом Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ постоянно приходится Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, являСтся Π½Π΅ консоль ΠΈΠ»ΠΈ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π°, Π° Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ. Π’ систСмах, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ, Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΠΎΡΡ‚ΡŒ появилась Π΄Π°Π²Π½Ρ‹ΠΌ-Π΄Π°Π²Π½ΠΎ.

Π‘Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ интСрфСйсы использовались ΠΊΠΎΠ³Π΄Π°-Ρ‚ΠΎ ΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ. НапримСр, старый DOS’овский интСрфСйс ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки. И сСйчас ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚Π°ΠΊΠΈΠ΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Π΄Π°ΡŽΡ‚ вопрос, Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΈ большС Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°ΡŽΡ‚, Π° ΠΆΠ΄ΡƒΡ‚, ΠΏΠΎΠΊΠ° Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚. Π‘ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΊΠ°ΠΊ стали ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ ΠΎΠΊΠΎΠ½Π½Ρ‹Π΅ интСрфСйсы, появился асинхронный Π²Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄. Π’ настоящСС врСмя Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ интСрфСйсов ΠΈΠΌΠ΅Π½Π½ΠΎ асинхронныС.

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΠΎΡΡ‚ΡŒ?

ΠœΡ‹ рСгистрируСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ-callback, Π½ΠΎ Π½Π° сСй Ρ€Π°Π· Π½Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ: Β«Π§Π΅Π»ΠΎΠ²Π΅ΠΊ, Π²Π²Π΅Π΄ΠΈ Π΄Π°Π½Π½Ρ‹Π΅, Π° я Π±ΡƒΠ΄Ρƒ ΠΆΠ΄Π°Ρ‚ΡŒΒ». Π­Ρ‚ΠΎ Π·Π²ΡƒΡ‡ΠΈΡ‚ ΠΈΠ½Π°Ρ‡Π΅: «Когда Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ Π²Π²Π΅Π΄Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅, Π²Ρ‹Π·ΠΎΠ²ΠΈ, поТалуйста, эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ β€” callbackΒ». Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Π»ΡŽΠ±Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса. Но Π² JavaScript ΠΎΠ½ Π±Ρ‹Π» ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ. Π’ 2009 Π³ΠΎΠ΄Ρƒ, ΠΊΠΎΠ³Π΄Π° Π΄Π²ΠΈΠΆΠΎΠΊ JavaScript стал Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π³ΠΎΡ€Π°Π·Π΄ΠΎ быстрСС, ΡƒΠΌΠ½Ρ‹Π΅ рСбята Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π½Π° сСрвСрС, ΠΈ сдСлали инструмСнт ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Node.js.

Node.js

ИдСя Node.js Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½Π° ΡΠ΅Ρ€Π²Π΅Ρ€Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ пСрСносится JavaScript, ΠΈ вСсь Π²Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄ становится асинхронным. Π’ΠΎ Π΅ΡΡ‚ΡŒ вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡ‚ΠΎΠΊ блокировался, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ асинхронный Π²Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄. ΠžΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ Ρ‚ΠΎΠΆΠ΅ становится асинхронным. НапримСр, Ссли ΠΏΠΎΡ‚ΠΎΠΊΡƒ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ содСрТимоС Ρ„Π°ΠΉΠ»Π°, ΠΎΠ½ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚: Β«Π”Π°ΠΉΡ‚Π΅ ΠΌΠ½Π΅, поТалуйста, содСрТимоС Ρ„Π°ΠΉΠ»Π°, Π° ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½ΠΎ, Π²Ρ‹Π·ΠΎΠ²ΠΈΡ‚Π΅ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽΒ». ΠœΡ‹ поставили Π·Π°Π΄Π°Ρ‡Ρƒ ΠΈ занимаСмся своими Π΄Π΅Π»Π°ΠΌΠΈ.

Π’Π°ΠΊΠΎΠΉ асинхронный ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ оказался вСсьма дСйствСнным, ΠΈ Node.js быстро Π½Π°Π±Ρ€Π°Π» ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ.

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Node.js?

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ

На Π²Ρ…ΠΎΠ΄Π΅ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ΅ΠΌΡ‰ΠΈΠΊ β€” это Ρ†ΠΈΠΊΠ». JavaScript ΠΎΠ΄Π½ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ язык. Но это Π½Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΌ Π½ΠΈΡ‡Π΅Π³ΠΎ нСльзя Π΄Π΅Π»Π°Ρ‚ΡŒ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΡ‚ΠΎΠΊΠ°Ρ…. Π’ Π½Π΅ΠΌ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΠΎΡ‚ΠΎΠΊΠΈ Ρ‡Π΅Ρ€Π΅Π· Web Workers ΠΈ Ρ‚.Π΄. Но Π½Π° Π²Ρ…ΠΎΠ΄Π΅ стоит ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡ‚ΠΎΠΊ.

Π’Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ для Node.js ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ малСнькиС. Основная Ρ€Π°Π±ΠΎΡ‚Π° ΠΈΠ΄Π΅Ρ‚ с Π²Π²ΠΎΠ΄ΠΎΠΌ-Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ (Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…, Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму, Π² сторонниС сСрвисы ΠΈ Ρ‚.Π΄.). Π‘Π°ΠΌΠΈ вычислСния Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ ΠΌΠ°Π»ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Когда Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΠΈΠ· Π±Π°Π·Ρ‹ ΠΈΠ»ΠΈ ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, вызываСтся callback, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ какая-Ρ‚ΠΎ функция, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π΄Π°Π½Π½Ρ‹Π΅.

Но Π² этой схСмС Π½Π΅Ρ‚ оТидания. Π‘Ρ€Π°Π²Π½ΠΈΠΌ Π΅Π΅ с Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΉ модСлью ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ сСрвСра Π² Java.

What happens in Java?

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ

Π—Π΄Π΅ΡΡŒ Π΅ΡΡ‚ΡŒ ΠΏΡƒΠ» ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². Π‘Π½Π°Ρ‡Π°Π»Π° ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π² ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ, ΠΏΠΎΡ‚ΠΎΠΌ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΊ заблокировался, ΠΈ ΠΌΡ‹ создали Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½. Он Ρ‚ΠΎΠΆΠ΅ заблокировался, создаСм ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ. А Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΎΠ½ΠΈ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ ΠΊ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌ опСрациям Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°. НапримСр, ΠΏΠΎΡ‚ΠΎΠΊ запросил Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Π‘Π” ΠΈ ΠΆΠ΄Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° эти Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠ΄ΡƒΡ‚.

МодСль Node.js ΠΎΡ‡Π΅Π½ΡŒ быстро стала популярной. ЕстСствСнно, Π² этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ люди стали ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π΅Π΅ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… языках. Node.js Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ вырвался Π²ΠΏΠ΅Ρ€Π΅Π΄ Π² Π½Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… систСмах с большим объСмом Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°. Но ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΎΠ½ Π½Π΅ для Π»ΡŽΠ±Ρ‹Ρ… систСм. Если Ρƒ вас ΠΌΠ½ΠΎΠ³ΠΎ вычислСний ΠΈΠ»ΠΈ нСбольшоС количСство запросов, Ρ‚ΠΎ большого прСимущСства Π²Ρ‹ Π½Π΅ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅. БоотвСтствСнно, Π² Java стали ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, Π² Ρ‚ΠΎΠΌ числС ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с асинхронным Π²Π²ΠΎΠ΄ΠΎΠΌ-Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ Vert.x. Π‘Π΅Ρ€Π²Π΅Ρ€ Vert.x построСн Π½Π° Ρ‚Π°ΠΊΠΎΠΌ ΠΆΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ Node.js.

РСшСниС Node.js интСрСсноС, ΠΎΠ½ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Когда ΠΏΡ€ΠΈΡˆΠ»Π° Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ, стали ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ сСрвСр, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ называСтся Netty. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ оказался ΠΎΡ‡Π΅Π½ΡŒ Π²Ρ‹Π³ΠΎΠ΄Π½Ρ‹ΠΌ.

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ многопоточности

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ Π² Java? Бтарая добрая ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ Π² Java β€” это Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Ρ‹ многопоточности:

Π‘Π»ΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ, слоТно ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ, слоТно Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

ЗдравствуйтС. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я ΠΏΡ€ΠΎΠ±Π΅Π³ΡƒΡΡŒ Π³Π°Π»ΠΎΠΏΠΎΠΌ ΠΏΠΎ Π•Π²Ρ€ΠΎΠΏΠ°ΠΌ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ β€” расскаТу, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚ ΠΏΠΎΠ΄ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, познакомлю с Π°ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ, Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ, ΠΈ Π½Π°ΠΊΠΎΠ½Π΅Ρ†, ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΌΡ‹ сдСлаСм распознаваниС ΠΌΡ‹ΡˆΠΈΠ½Ρ‹Ρ… ТСстов, ΠΊΠ°ΠΊ Π² старой Opera ΠΈ Π΅Ρ‘ Π΄ΡƒΡ…ΠΎΠ²Π½ΠΎΠΌ наслСдникС β€” Vivaldi.

ЦСль β€” ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒ с основными концСпциями Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ программирования ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅ всё Ρ‚Π°ΠΊ слоТно ΠΈ ΡΡ‚Ρ€Π°ΡˆΠ½ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд.

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ
Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅?

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π½Π° этот вопрос, обратимся ΠΊ сайту. На Π½Ρ‘ΠΌ Π΅ΡΡ‚ΡŒ красивая ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ 4 основных критСрия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ прилоТСния.

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ быстрым, отказоустойчивым ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ.
Выглядит ΠΊΠ°ΠΊ Β«ΠΌΡ‹ Π·Π° всё Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ ΠΏΡ€ΠΎΡ‚ΠΈΠ² всСго ΠΏΠ»ΠΎΡ…ΠΎΠ³ΠΎΒ», Π²Π΅Ρ€Π½ΠΎ?

Π§Ρ‚ΠΎ подразумСваСтся ΠΏΠΎΠ΄ этими словами:

МодСль Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ²

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Π²Π΅Ρ…ΠΈ развития:

Π§Ρ‚ΠΎ ΡƒΠΌΠ΅ΡŽΡ‚ Π°ΠΊΡ‚ΠΎΡ€Ρ‹?

Акторы β€” это Ρ‚Π΅ ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π½ΠΎ:

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ

Актор А Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ сообщСниС Π°ΠΊΡ‚ΠΎΡ€Ρƒ Π‘. Всё, Ρ‡Ρ‚ΠΎ Ρƒ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ β€” ActorRef (Π½Π΅ΠΊΠΈΠΉ адрСс). Актор Π‘ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π³Π΄Π΅ ΡƒΠ³ΠΎΠ΄Π½ΠΎ.
Актор А отправляСт письмо Π‘ Ρ‡Π΅Ρ€Π΅Π· систСму (ActorSystem). БистСма ΠΊΠ»Π°Π΄Ρ‘Ρ‚ письмо Π² ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹ΠΉ ящик Π°ΠΊΡ‚ΠΎΡ€Π° Π‘ ΠΈ Β«Π±ΡƒΠ΄ΠΈΡ‚Β» Π°ΠΊΡ‚ΠΎΡ€ Π‘. Актор Π‘ Π±Π΅Ρ€Ρ‘Ρ‚ письмо ΠΈΠ· ящика ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚.

По ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, выглядит излишнС слоТно, Π½ΠΎ модСль Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ² прСкрасно лоТится Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΈΡ€, Ссли ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π°ΠΊΡ‚ΠΎΡ€Ρ‹ β€” это люди, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΡƒΡ‡Π΅Π½Ρ‹ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Π² ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ Ρ€Π°Π·Π΄Ρ€Π°ΠΆΠΈΡ‚Π΅Π»ΠΈ.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΠΌ сСбС ΠΎΡ‚Ρ†Π° ΠΈ сына:

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ

ΠžΡ‚Π΅Ρ† ΡˆΠ»Ρ‘Ρ‚ сыну Π‘ΠœΠ‘ΠΊΡƒ Β«Π£Π±Π΅Ρ€ΠΈ Π² ΠΊΠΎΠΌΠ½Π°Ρ‚Π΅Β» ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ своими Π΄Π΅Π»Π°ΠΌΠΈ. Π‘Ρ‹Π½ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ Π‘ΠœΠ‘ΠΊΡƒ ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΡƒΠ±ΠΎΡ€ΠΊΡƒ. ΠžΡ‚Π΅Ρ† Ρ‚Π΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ ΠΈΠ³Ρ€Π°Π΅Ρ‚ Π² ΠΏΠΎΠΊΠ΅Ρ€. Π‘Ρ‹Π½ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Π΅Ρ‚ ΡƒΠ±ΠΎΡ€ΠΊΡƒ ΠΈ ΡˆΠ»Ρ‘Ρ‚ БМБ Β«Π“ΠΎΡ‚ΠΎΠ²ΠΎΒ». Выглядит просто, Π²Π΅Ρ€Π½ΠΎ?

Π’Π΅ΠΏΠ΅Ρ€ΡŒ прСдставим, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π΅Ρ† ΠΈ сын Π½Π΅ Π°ΠΊΡ‚ΠΎΡ€Ρ‹, Π° ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π΄Ρ‘Ρ€Π³Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π΄Ρ€ΡƒΠ³ Ρƒ Π΄Ρ€ΡƒΠ³Π°. ΠžΡ‚Π΅Ρ† Π΄Ρ‘Ρ€Π³Π°Π΅Ρ‚ сына Π·Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ Β«ΡƒΠ±Π΅Ρ€ΠΈ Π² ΠΊΠΎΠΌΠ½Π°Ρ‚Π΅Β» ΠΈ слСдуСт Π·Π° Π½ΠΈΠΌ ΠΏΠΎ пятам, оТидая, ΠΏΠΎΠΊΠ° сын Π½Π΅ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ ΡƒΠ±ΠΎΡ€ΠΊΡƒ ΠΈ Π½Π΅ пСрСдаст ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΎΡ‚Ρ†Ρƒ. Π˜Π³Ρ€Π°Ρ‚ΡŒ Π² ΠΏΠΎΠΊΠ΅Ρ€ Π² это врСмя ΠΎΡ‚Π΅Ρ† Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚. Π’ этом контСкстС модСль Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ² становится Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ.

Akka.NET

Всё, Ρ‡Ρ‚ΠΎ написано Π½ΠΈΠΆΠ΅, справСдливо ΠΈ для ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Akka для JVM, Π½ΠΎ для мСня C# Π±Π»ΠΈΠΆΠ΅, Ρ‡Π΅ΠΌ Java, поэтому я Π±ΡƒΠ΄Ρƒ Ρ€Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Akka.NET.

Π˜Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊΠΈΠ΅ прСимущСства Π΅ΡΡ‚ΡŒ Ρƒ Akka?

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок

Π£ Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ² Π΅ΡΡ‚ΡŒ иСрархия β€” Π΅Ρ‘ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ Π΄Π΅Ρ€Π΅Π²Π°. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π°ΠΊΡ‚ΠΎΡ€Π° Π΅ΡΡ‚ΡŒ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Β«Π΄Π΅Ρ‚ΠΈΒ».

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ
Akka.NET documentation Copyright 2013-2018 Akka.NET project

Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π°ΠΊΡ‚ΠΎΡ€Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Supervision strategy β€” Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли Ρƒ Β«Π΄Π΅Ρ‚Π΅ΠΉΒ» Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ пошло Π½Π΅ Ρ‚Π°ΠΊ. НапримСр, Β«ΠΏΡ€ΠΈΠ±ΠΈΡ‚ΡŒΒ» Π°ΠΊΡ‚ΠΎΡ€, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Π° Π·Π°Ρ‚Π΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Π°ΠΊΡ‚ΠΎΡ€ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ‚ΠΈΠΏΠ° ΠΈ ΠΏΠΎΡ€ΡƒΡ‡ΠΈΡ‚ΡŒ Π΅ΠΌΡƒ Ρ‚Ρƒ ΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρƒ.

Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° я сдСлал Π½Π° Akka.net CRUD ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ слой «бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈΒ» Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π½Π° Π°ΠΊΡ‚ΠΎΡ€Π°Ρ…. Π—Π°Π΄Π°Ρ‡Π΅ΠΉ этого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π±Ρ‹Π»ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ, стоит Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°ΠΊΡ‚ΠΎΡ€Ρ‹ Π² Π½Π΅ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… систСмах β€” ΡΠ΄Π΅Π»Π°ΡŽΡ‚ Π»ΠΈ ΠΎΠ½ΠΈ Тизнь Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΠ»ΠΈ добавят Π΅Ρ‰Ρ‘ Π±ΠΎΠ»ΠΈ.

Как ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ встроСнная ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок Π² Akka:

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ

И Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Π’Π°ΠΊ выглядит инициализация систСмы Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ² Π² IoC ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅:

EchoActor β€” самый простой Π°ΠΊΡ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚Π΅Π»ΡŽ:

Для связи Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ² с Β«ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΒ» ΠΊΠΎΠ΄ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° Ask:

Π˜Ρ‚ΠΎΠ³ΠΎ

ΠŸΠΎΡ…ΠΈΠΌΠΈΡ‡ΠΈΠ² с Π°ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ, ΠΌΠΎΠ³Ρƒ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ:

Π§Π°ΡΡ‚ΡŒ 2: Π Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΏΠΎΡ‚ΠΎΠΊΠΈ

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Ρ‘ΠΌ ΠΊ Π±ΠΎΠ»Π΅Π΅ популярной ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Ρ‚Π΅ΠΌΠ΅ β€” Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌ. Если с Π°ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ Π² процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΠΎΠ²ΡΡ‚Ρ€Π΅Ρ‡Π°Ρ‚ΡŒΡΡ, Ρ‚ΠΎ Rx ΠΏΠΎΡ‚ΠΎΠΊΠΈ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ пригодятся ΠΊΠ°ΠΊ Π²ΠΎ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π΅, Ρ‚Π°ΠΊ ΠΈ Π² бэкСндС. Π˜Ρ… рСализация Π΅ΡΡ‚ΡŒ ΠΏΠΎΡ‡Ρ‚ΠΈ Π²ΠΎ всСх соврСмСнных языках программирования. Π― Π±ΡƒΠ΄Ρƒ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π½Π° RxJs, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² нашС врСмя Π΄Π°ΠΆΠ΅ бэкСнд программистам ΠΏΠΎΡ€ΠΎΠΉ приходится Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π° JavaScript.

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ
Rx-ΠΏΠΎΡ‚ΠΎΠΊΠΈ Π΅ΡΡ‚ΡŒ для всСх популярных языков программирования

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ, я Π½Π°Ρ‡Π½Ρƒ с Pull ΠΈ Push ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ.

Single return valueMultiple return values
Pull
Synchronous
Interactive
TIEnumerable
Push
Asynchronous
Reactive
TaskIObservable

Pull ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ β€” это Ρ‚ΠΎ, ΠΊ Ρ‡Π΅ΠΌΡƒ ΠΌΡ‹ всС ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ»ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘Π°ΠΌΡ‹ΠΉ яркий ΠΏΡ€ΠΈΠΌΠ΅Ρ€ β€” массив.

Π’ Π½Ρ‘ΠΌ ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, сам ΠΎΠ½ эти Π΄Π°Π½Π½Ρ‹Π΅ Π½Π΅ помСняСт, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π΄Π°Ρ‚ΡŒ ΠΏΠΎ запросу.

Π’Π°ΠΊΠΆΠ΅ ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡ… ΠΊΠ°ΠΊ-Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ прСдставим, Ρ‡Ρ‚ΠΎ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π½Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ ΠΎΠ½Π° ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ сообщит ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ появились (Push). И Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя ΠΌΡ‹ всё Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΊ этой ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹Π΅ трансформации.

Когда Π² source появится Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 1, console.log Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ β€œmy number is 1”.

ΠŸΠΎΡΠ²Π»ΡΠ΅Ρ‚ΡΡ новая ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ β€” Subject (ΠΈΠ»ΠΈ Observable):

Π­Ρ‚ΠΎ ΠΈ Π΅ΡΡ‚ΡŒ push-коллСкция, которая Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΡΡ‹Π»Π°Ρ‚ΡŒ увСдомлСния ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ своСго состояния.

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Π² Π½Π΅ΠΉ сразу появятся числа 1, 2 ΠΈ 3, Ρ‡Π΅Ρ€Π΅Π· сСкунду 4, Π° Π·Π°Ρ‚Π΅ΠΌ коллСкция Β«Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡΒ». Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠΉ особый Ρ‚ΠΈΠΏ события.

Вторая ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ β€” это Observer. Он ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ Π½Π° события Subject’a ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. НапримСр:

Π’ΡƒΡ‚ Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Ρƒ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Subject ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ подписчиков.

Выглядит нСслоТно, Π½ΠΎ ΠΏΠΎΠΊΠ° Π½Π΅ совсСм понятно, для Ρ‡Π΅Π³ΠΎ это Π½ΡƒΠΆΠ½ΠΎ. Π― Π΄Π°ΠΌ Π΅Ρ‰Ρ‘ 2 опрСдСлСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ, работая с Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠΊΠ°ΠΆΡƒ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΈ Π² ΠΊΠ°ΠΊΠΈΡ… ситуациях раскрываСтся вСсь ΠΈΡ… ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π».

Cold observables

Hot observables

Π’ ΠΊΠ°ΠΊΠΈΡ… ситуациях ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΏΠΎΡ‚ΠΎΠΊΠΈ?

Когда Π΅ΡΡ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊ Π΄Π°Π½Π½Ρ‹Ρ…, распрСдСлённый Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. НапримСр, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π²Π²ΠΎΠ΄. Или Π»ΠΎΠ³ΠΈ ΠΈΠ· ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ сСрвиса. Π’ ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² я Π²ΠΈΠ΄Π΅Π» самописный Π»ΠΎΠ³Π³Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ собирал события Π·Π° N сСкунд, Π° Π·Π°Ρ‚Π΅ΠΌ Π΅Π΄ΠΈΠ½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ записывал всю ΠΏΠ°Ρ‡ΠΊΡƒ. Код аккумулятора Π·Π°Π½ΠΈΠΌΠ°Π» страницу. Если Π±Ρ‹ использовались Rx ΠΏΠΎΡ‚ΠΎΠΊΠΈ, Ρ‚ΠΎ это Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‰Π΅:

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ
β€œRxJs Reference / Observable, documentation licensed under CC BY 4.0.
(Ρ‚ΡƒΡ‚ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ, ΠΏΠΎΡΡΠ½ΡΡŽΡ‰ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°ΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ)

И, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования.

РаспознаваниС ΠΌΡ‹ΡˆΠΈΠ½Ρ‹Ρ… ТСстов ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Rx ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²

Π’ старой ΠžΠΏΠ΅Ρ€Π΅ ΠΈΠ»ΠΈ Π΅Ρ‘ Π΄ΡƒΡ…ΠΎΠ²Π½ΠΎΠΌ наслСдникС β€” Vivaldi β€” Π±Ρ‹Π»ΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΌΡ‹ΡˆΠΈΠ½Ρ‹Ρ… ТСстов.

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ

Π’ΠΎ Π΅ΡΡ‚ΡŒ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Π²Π°Ρ‚ΡŒ двиТСния ΠΌΡ‹ΡˆΡŒΡŽ Π²Π²Π΅Ρ€Ρ…/Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ/Π²Π»Π΅Π²ΠΎ ΠΈ ΠΈΡ… ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±Π΅Π· Rx ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², Π½ΠΎ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ слоТным ΠΈ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΌ.

А Π²ΠΎΡ‚ ΠΊΠ°ΠΊ это выглядит с Rx ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ:

Начну с ΠΊΠΎΠ½Ρ†Π° β€” Π·Π°Π΄Π°ΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ Π² ΠΊΠ°ΠΊΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ я Π±ΡƒΠ΄Ρƒ ΠΈΡΠΊΠ°Ρ‚ΡŒ Π² исходной ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ:

Π­Ρ‚ΠΎ Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½Ρ‹Π΅ Π²Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ ΠΈ ΠΈΡ… ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ.

Π”Π°Π»Π΅Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ события ΠΌΡ‹ΡˆΠΈ Π² Rx ΠΏΠΎΡ‚ΠΎΠΊΠΈ. Π’ΠΎ всСх Rx Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ… Π΅ΡΡ‚ΡŒ встроСнныС инструмСнты для прСвращСния стандартных ΠΈΠ²Π΅Π½Ρ‚ΠΎΠ² Π² Observables.

Π”Π°Π»Π΅Π΅, я Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΡƒΡŽ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΌΡ‹ΡˆΠΈ ΠΏΠΎ 2 ΠΈ Π½Π°Ρ…ΠΎΠΆΡƒ ΠΈΡ… Ρ€Π°Π·Π½ΠΈΡ†Ρƒ, получая смСщСниС ΠΌΡ‹ΡˆΠΈ.

И Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΡƒΡŽ эти двиТСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ события ‘mousedown’ ΠΈ ‘mouseup’.

Ѐункция concat Π²Ρ‹Ρ€Π΅Π·Π°Π΅Ρ‚ слишком ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ двиТСния ΠΈ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΡƒΠ΅Ρ‚ двиТСния, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΠΎ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ.

Если Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ оси X ΠΈΠ»ΠΈ Y слишком ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ΅, ΠΎΠ½ΠΎ обнуляСтся. А Π·Π°Ρ‚Π΅ΠΌ ΠΎΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ смСщСния остаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π½Π°ΠΊ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½Ρ‹Π΅ Π²Π΅ΠΊΡ‚ΠΎΡ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ искали.

ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ sequenceEqual ΠΌΠΎΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ двиТСния с исходными ΠΈ, Ссли Π΅ΡΡ‚ΡŒ совпадСниС, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ΅ дСйствиС.

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ, ΠΊΡ€ΠΎΠΌΠ΅ распознавания ТСстов, здСсь Π΅ΡΡ‚ΡŒ Π΅Ρ‰Ρ‘ отрисовка ΠΊΠ°ΠΊ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ…, Ρ‚Π°ΠΊ ΠΈ Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΉ ΠΌΡ‹ΡˆΠΈ Π½Π° HTML canvas. Π§ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° ΠΎΡ‚ этого Π½Π΅ страдаСт.

Из Ρ‡Π΅Π³ΠΎ слСдуСт Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½ΠΎ прСимущСство β€” Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π», написанный ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Rx ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *