Π’ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ выполнСния ΠΊΠΎΠ΄Π° являСтся критичСски Π²Π°ΠΆΠ½Ρ‹ΠΌ аспСктом, особСнно ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Ρ… Π·Π°Π΄Π°Π½ΠΈΠΉ. Одним ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… инструмСнтов для синхронизации процСссов выступаСт ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π–Π΄Π°Ρ‚ΡŒ. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ позволяСт ΠΏΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° Π΄ΠΎ наступлСния ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ события ΠΈΠ»ΠΈ истСчСния Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. ПониманиС Π΅Π³ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для создания ΠΎΡ‚Π·Ρ‹Π²Ρ‡ΠΈΠ²Ρ‹Ρ… интСрфСйсов ΠΈ эффСктивной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ„ΠΎΠ½Π΅.

МногиС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ с ситуациСй, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°ΡƒΠ·Ρƒ Π² Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° Π±Π΅Π· ΠΏΠΎΠ»Π½ΠΎΠΉ остановки Ρ€Π°Π±ΠΎΡ‚Ρ‹ всСй систСмы. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ простых Ρ†ΠΈΠΊΠ»ΠΎΠ² Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π–Π΄Π°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ взаимодСйствуСт с ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠΌ Π·Π°Π΄Π°Ρ‡ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² 1Π‘. Он освобоТдаСт процСссорноС врСмя для Π΄Ρ€ΡƒΠ³ΠΈΡ… Π·Π°Π΄Π°Ρ‡, ΠΏΠΎΠΊΠ° ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ для асинхронных сцСнариСв.

Рассмотрим Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ эту ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹Π΅ ΠΊΠ°ΠΌΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΏΡ€ΠΈ Π΅Ρ‘ использовании Π² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…. Π“Π»ΡƒΠ±ΠΎΠΊΠΎΠ΅ ΠΏΠΎΠ³Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΌΠ΅Ρ…Π°Π½ΠΈΠΊΡƒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… ошибок, связанных с зависаниСм интСрфСйса ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ событий.

Бинтаксис ΠΈ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π–Π΄Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ строгий синтаксис, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСляСтся вСрсиСй ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ контСкстом выполнСния. Π’ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΌ случаС ΠΎΠ½ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰Π΅Π΅ условиС оТидания. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ события, Ρ‚Π°ΠΉΠΌΠ΅Ρ€ ΠΈΠ»ΠΈ слоТноС логичСскоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Если условиС Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ сразу, ΠΏΠΎΡ‚ΠΎΠΊ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ Π² состояниС оТидания.

Π’Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ зависит ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π² ΠΊΠ°ΠΊΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ выполняСтся ΠΊΠΎΠ΄: Π² основном ΠΏΠΎΡ‚ΠΎΠΊΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса ΠΈΠ»ΠΈ Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Π·Π°Π΄Π°Π½ΠΈΠΈ. Π’ интСрфСйсном ΠΏΠΎΡ‚ΠΎΠΊΠ΅ использованиС Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΉ Π±Π΅Π· ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΎΠΊΠ½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ пСрСстанСт ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π½Π° дСйствия ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. БистСма ΠΏΠΎΠΌΠ΅Ρ‚ΠΈΡ‚ Π΅Π³ΠΎ ΠΊΠ°ΠΊ «НС ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚Β».

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с событиями часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ конструкция, ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰Π°Ρ сигнала ΠΎΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. НапримСр, ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с внСшними соСдинСниями ΠΈΠ»ΠΈ асинхронными Π²Ρ‹Π·ΠΎΠ²Π°ΠΌΠΈ. Код ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π–Π΄Π°Ρ‚ΡŒ Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅.ΠžΠΆΠΈΠ΄Π°Ρ‚ΡŒ(Π’Π°ΠΉΠΌΠ°ΡƒΡ‚);

Π—Π΄Π΅ΡΡŒ Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ прСдставляСт собой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ синхронизации, Π° Π’Π°ΠΉΠΌΠ°ΡƒΡ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ максимальноС врСмя оТидания. Если событиС Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ Π·Π° ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ врСмя, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° продолТится, Ρ‡Ρ‚ΠΎ позволяСт Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибок ΠΈΠ»ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹Ρ… ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ИспользованиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π–Π΄Π°Ρ‚ΡŒ Π² Ρ†ΠΈΠΊΠ»Π°Ρ… Π±Π΅Π· условия Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΏΠΎΠ»Π½ΠΎΠΌΡƒ зависанию клиСнтского прилоТСния. ВсСгда прСдусматривайтС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ прСрывания оТидания.

πŸ’‘

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Ρ‹ оТидания Π² Ρ†ΠΈΠΊΠ»Π°Ρ… опроса статуса, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ интСрфСйс Π½Π° Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ врСмя.

ОТиданиС событий ΠΈ синхронизация ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²

Одной ΠΈΠ· основных Π·Π°Π΄Π°Ρ‡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π–Π΄Π°Ρ‚ΡŒ являСтся синхронизация Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² выполнСния. Π’ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠΉ срСдС часто Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ситуация, ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡ‚ΠΎΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ свою Ρ€Π°Π±ΠΎΡ‚Ρƒ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊ Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΈ Π½Π΅ подаст сигнал. ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ событий Π² 1Π‘ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ элСгантно ΠΈ эффСктивно.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ выступаСт Π² Ρ€ΠΎΠ»ΠΈ Ρ„Π»Π°ΠΆΠΊΠ°. Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΎΠ½ находится Π² Π½Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ состоянии. ΠŸΠΎΡ‚ΠΎΠΊ, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π–Π΄Π°Ρ‚ΡŒ, блокируСтся Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°, ΠΏΠΎΠΊΠ° Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊ Π½Π΅ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ установки события. ПослС этого ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΠΉ ΠΏΠΎΡ‚ΠΎΠΊ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ возобновляСт Ρ€Π°Π±ΠΎΡ‚Ρƒ. Π­Ρ‚ΠΎ позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ постоянного опроса состояния (polling), Ρ‡Ρ‚ΠΎ экономит рСсурсы процСссора.

πŸ“Š Как часто Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ Π² 1Π‘?
Π•ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ Π² слоТных Π·Π°Π΄Π°Ρ‡Π°Ρ…
Π Π΅Π΄ΠΊΠΎ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ²
Никогда, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽ Π² ΠΎΠ΄Π½ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅
Π—Π°Ρ‚Ρ€ΡƒΠ΄Π½ΡΡŽΡΡŒ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ взаимодСйствия Π΄Π²ΡƒΡ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ выполняСт Ρ‚ΡΠΆΠ΅Π»ΡƒΡŽ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ Π΅Ρ‘ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ для отобраТСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°. ИспользованиС ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ² синхронизации Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊ Π½Π΅ попытаСтся ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ Ρ€Π°Π½ΡŒΡˆΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Π‘Ρ‚ΠΎΠΈΡ‚ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π–Π΄Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² событий. Π£Ρ‚Π΅Ρ‡ΠΊΠ° Ρ‚Π°ΠΊΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΈΡΡ‡Π΅Ρ€ΠΏΠ°Π½ΠΈΡŽ рСсурсов ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы. ВсСгда освобоТдайтС рСсурсы послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с синхронизаторами.

Π Π°Π±ΠΎΡ‚Π° с Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Π°ΠΌΠΈ ΠΈ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ оТидания

ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ Π²Π°ΠΆΠ½Ρ‹ΠΌ аспСктом использования ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π–Π΄Π°Ρ‚ΡŒ являСтся ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ. БСсконСчноС ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ события β€” это рискованная стратСгия, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ событиС ΠΌΠΎΠΆΠ΅Ρ‚ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π½Π°ΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΈΠ·-Π·Π° ошибки Π² Π»ΠΎΠ³ΠΈΠΊΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΈΠ»ΠΈ внСшнСго сбоя. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ практичСски всСгда слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Π°.

Π’Π°ΠΉΠΌΠ°ΡƒΡ‚ задаСтся Π² миллисСкундах ΠΈ опрСдСляСт ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ°. Если Π·Π° ΠΎΡ‚Π²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ врСмя событиС Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ свою Ρ€Π°Π±ΠΎΡ‚Ρƒ, ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ пСрСдаСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строкС ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎ позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ситуации Β«Ρ‚Π°ΠΉΠΌ-Π°ΡƒΡ‚Β», Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, вывСсти сообщСниС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, сущСствуСт ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ прСрывания оТидания. Π’ 1Π‘ прСдусмотрСн ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠŸΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² оТидания ΠΈΠ»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π»Π°Π³ΠΎΠ² ΠΎΡ‚ΠΌΠ΅Π½Ρ‹. Π­Ρ‚ΠΎ особСнно Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΌΠ΅Π½Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

  • πŸ•’ ВсСгда устанавливайтС Ρ€Π°Π·ΡƒΠΌΠ½Ρ‹ΠΉ Π»ΠΈΠΌΠΈΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ оТидания, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡΡ‚Π°Π²Π°Π»ΠΎΡΡŒ ΠΎΡ‚Π·Ρ‹Π²Ρ‡ΠΈΠ²Ρ‹ΠΌ.
  • πŸ›‘ Π Π΅Π°Π»ΠΈΠ·ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Ρ„Π»Π°Π³ΠΎΠ² ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ² оТидания для возмоТности Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎΠ³ΠΎ Π²Ρ‹Ρ…ΠΎΠ΄Π°.
  • ⚑ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ асинхронныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ‚Π°ΠΌ, Π³Π΄Π΅ это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, вмСсто Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ оТидания.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° прСрывания Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Если ΠΏΠΎΡ‚ΠΎΠΊ Π±Ρ‹Π» ΠΏΡ€Π΅Ρ€Π²Π°Π½, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ‚ΡŒ Π·Π°Ρ…Π²Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ рСсурсы, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ систСму Π² Π½Π΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΌ состоянии.

β˜‘οΈ ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚ΠΎΠ²

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ: 0 / 4

Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° интСрфСйса ΠΈ Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Π΅ задания

НаиболСС Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π·ΠΎΠ½ΠΎΠΉ для примСнСния ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π–Π΄Π°Ρ‚ΡŒ являСтся основной ΠΏΠΎΡ‚ΠΎΠΊ клиСнтского прилоТСния. Π›ΡŽΠ±Π°Ρ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° этого ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ интСрфСйс пСрСстаСт ΠΎΡ‚Ρ€ΠΈΡΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒΡΡ, ΠΊΠ½ΠΎΠΏΠΊΠΈ Π½Π΅ Π½Π°ΠΆΠΈΠΌΠ°ΡŽΡ‚ΡΡ, Π° курсор ΠΌΡ‹ΡˆΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ Π² «пСсочныС часы». ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ воспринимаСт это ΠΊΠ°ΠΊ зависаниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Если Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ с ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ΠΌ, Π½Π°ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ рСкомСндуСтся Π²Ρ‹Π½ΠΎΡΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅. Π’ 1Π‘ это рСализуСтся Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π€ΠΎΠ½ΠΎΠ²Ρ‹Ρ… Π·Π°Π΄Π°Π½ΠΈΠΉ ΠΈΠ»ΠΈ использованиС ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° выполнСния. Π’ этом случаС Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° Π½Π΅ влияСт Π½Π° Ρ€Π°Π±ΠΎΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ всСго прилоТСния.

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Никогда Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π–Π΄Π°Ρ‚ΡŒ с большим ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠΌ Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°Ρ… событий интСрфСйса, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Β«ΠŸΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈΒ» ΠΈΠ»ΠΈ Β«ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈΒ». Π­Ρ‚ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ ΡƒΡ…ΡƒΠ΄ΡˆΠΈΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΎΠΏΡ‹Ρ‚.

Для Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… процСссов, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ… взаимодСйствия с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ асинхронных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ², Π³Π΄Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ возвращаСтся Ρ‡Π΅Ρ€Π΅Π· callback-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π½Π΅ блокируя основной ΠΏΠΎΡ‚ΠΎΠΊ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ оТидания ΠΎΡ‚Π²Π΅Ρ‚Π°.

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ с Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ

Π’ арсСналС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° 1Π‘ Π΅ΡΡ‚ΡŒ нСсколько способов ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°ΡƒΠ·Ρƒ Π² Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠ΄Π°. Помимо ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π–Π΄Π°Ρ‚ΡŒ, часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠŸΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° БистСма ΠΈΠ»ΠΈ простыС Ρ†ΠΈΠΊΠ»Ρ‹. Однако эти ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ различия Π² эффСктивности ΠΈ влиянии Π½Π° систСму.

ΠœΠ΅Ρ‚ΠΎΠ΄ БистСма.ΠŸΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ являСтся Β«Π³Ρ€ΡƒΠ±ΠΎΠΉΒ» Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ. Он просто останавливаСт Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠ° Π½Π° ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ врСмя, Π½Π΅ освобоТдая рСсурсы процСссора для Π΄Ρ€ΡƒΠ³ΠΈΡ… Π·Π°Π΄Π°Ρ‡ Π² контСкстС Π΄Π°Π½Π½ΠΎΠ³ΠΎ процСсса (Π² зависимости ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ОБ). Π­Ρ‚ΠΎ ΠΌΠ΅Π½Π΅Π΅ эффСктивно, Ρ‡Π΅ΠΌ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ события, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎΡ‚ΠΎΠΊ Π² спящий Ρ€Π΅ΠΆΠΈΠΌ Π΄ΠΎ сигнала.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°, ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‰Π°Ρ основныС характСристики Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ ΠΈ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΉ Π² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅:

ΠœΠ΅Ρ‚ΠΎΠ΄ Π’ΠΈΠΏ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Нагрузка Π½Π° CPU РСакция Π½Π° события
Π–Π΄Π°Ρ‚ΡŒ Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ Асинхронная Минимальная МгновСнная
БистСма.ΠŸΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Бинхронная ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΠ΅Ρ‚ (сон) НСт
Π¦ΠΈΠΊΠ» с ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ АктивноС ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ Высокая Зависит ΠΎΡ‚ частоты
Асинхронный Π²Ρ‹Π·ΠΎΠ² ΠΠ΅Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰Π°Ρ Минимальная Π§Π΅Ρ€Π΅Π· callback

Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· сравнСния, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π–Π΄Π°Ρ‚ΡŒ Π² связкС с событиями являСтся Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ для синхронизации, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ сочСтаСт Π½ΠΈΠ·ΠΊΠΎΠ΅ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ рСсурсов с высокой ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ Ρ€Π΅Π°ΠΊΡ†ΠΈΠΈ Π½Π° измСнСния состояния систСмы.

ВСхничСскиС Π΄Π΅Ρ‚Π°Π»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π–Π΄Π°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы для ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° Π² состояниС WAIT. Π­Ρ‚ΠΎ позволяСт ядру ОБ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π½Π° освободившСмся ядрС процСссора.

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ°

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ΠΌ событий Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ часто Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ ошибки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ воспроизвСсти ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΈΡ‚ΡŒ. Одной ΠΈΠ· распространённых ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ являСтся взаимная Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° (deadlock). Π­Ρ‚ΠΎ происходит, ΠΊΠΎΠ³Π΄Π° Π΄Π²Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΆΠ΄ΡƒΡ‚ события Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°, ΠΈ Π½ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠ· событий Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ наступит.

Другая частая ошибка β€” потСря сигнала. Если событиС устанавливаСтся Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΡ‚ΠΎΠΊ успСл Π²ΠΎΠΉΡ‚ΠΈ Π² состояниС оТидания, сигнал ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ потСрян (Π² зависимости ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° события: Ρ€ΡƒΡ‡Π½ΠΎΠΉ сброс ΠΈΠ»ΠΈ автоматичСский сброс). Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΊ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ бСсконСчно, хотя условиС ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ.

Для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Ρ‚Π°ΠΊΠΈΡ… ситуаций рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΆΡƒΡ€Π½Π°Π» рСгистрации 1Π‘ с Π΄Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ логирования. ЗаписывайтС ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ установки ΠΈ сброса событий, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ…ΠΎΠ΄Π° ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Π±Π»ΠΎΠΊΠΎΠ² оТидания. Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρƒ происходящСго постфактум.

  • πŸ” ВсСгда провСряйтС порядок ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² синхронизации ΠΏΠ΅Ρ€Π΅Π΄ запуском ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ².
  • πŸ“ Π’Π΅Π΄ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ всСх этапов ΠΆΠΈΠ·Π½ΠΈ события для упрощСния диагностики.
  • βš™οΈ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ инструмСнты профилирования для выявлСния ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², находящихся Π² состоянии оТидания дольшС Π½ΠΎΡ€ΠΌΡ‹.

Π’Π°ΠΊΠΆΠ΅ стоит ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² кластСрС сСрвСров 1Π‘ Ρ€Π°Π±ΠΎΡ‚Π° с ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ свои особСнности, связанныС с балансировкой Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠ΅ΠΉ сСансов ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΌΠΈ процСссами.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ПовСдСниС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π–Π΄Π°Ρ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ Π² толстом ΠΈ Ρ‚ΠΎΠ½ΠΊΠΎΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Ρ‡Π΅Ρ€Π΅Π· Π²Π΅Π±-сСрвСр. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ тСстируйтС ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π²ΠΎ всСх Ρ†Π΅Π»Π΅Π²Ρ‹Ρ… Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ… запуска.

πŸ’‘

ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ организация оТидания событий β€” Π·Π°Π»ΠΎΠ³ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ 1Π‘ ΠΈ отсутствия Π²Π·Π°ΠΈΠΌΠ½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ.

Часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ вопросы

МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π–Π΄Π°Ρ‚ΡŒ Π² запросах ΠΈΠ»ΠΈ Π‘ΠšΠ”?

НСт, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π–Π΄Π°Ρ‚ΡŒ являСтся конструкциСй встроСнного языка ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ запросов ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ Π² схСмах ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Он Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² модулях ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Ρ„ΠΎΡ€ΠΌ ΠΈ ΠΎΠ±Ρ‰ΠΈΡ… модулях.

Π§Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚, Ссли Π½Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚ ΠΏΡ€ΠΈ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΈ события?

Если Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ ΠΈΠ»ΠΈ установлСн Π² Π±Π΅ΡΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΡΡ‚ΡŒ, ΠΏΠΎΡ‚ΠΎΠΊ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ наступлСния события Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎ Π΄ΠΎΠ»Π³ΠΎ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ зависанию ΠΏΠΎΡ‚ΠΎΠΊΠ°, Ссли событиС ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ установлСно.

Как ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅, Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π·Π°ΠΊΡ€Ρ‹Π» Ρ„ΠΎΡ€ΠΌΡƒ?

НСобходимо ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ прСрывания. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это рСализуСтся Ρ‡Π΅Ρ€Π΅Π· установку ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ„Π»Π°Π³Π° ΠΎΡ‚ΠΌΠ΅Π½Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ провСряСтся Π² Ρ†ΠΈΠΊΠ»Π΅ оТидания, ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· явный Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° прСрывания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° события ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ события закрытия Ρ„ΠΎΡ€ΠΌΡ‹.

ВлияСт Π»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π–Π΄Π°Ρ‚ΡŒ Π½Π° Π»ΠΈΡ†Π΅Π½Π·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ 1Π‘?

Пока ΠΏΠΎΡ‚ΠΎΠΊ находится Π² состоянии оТидания, сСанс считаСтся Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π»ΠΈΡ†Π΅Π½Π·ΠΈΡŽ. Π”Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ оТидания Π² основном ΠΏΠΎΡ‚ΠΎΠΊΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ нСэффСктивно Ρ€Π°ΡΡ…ΠΎΠ΄ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΎΠ½Π½Ρ‹Π΅ рСсурсы, Ссли ΠΎΠ½ΠΈ Π½Π΅ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°ΡŽΡ‚ΡΡ.