Sobes.tech
Junior — Middle

Ի՞նչ իրավիճակներում է տեղի ունենում ավտոմատ փոխանցում կատարելու գործընթացը goroutines-ների օգտագործման ժամանակ։

sobes.tech AI

Պատասխան AI-ից

Go-յում ավտոմատ կերպով կատարվող գործարկման փոխ switch-ը տեղի է ունենում հետևյալ իրավիճակներում:

  • Երբ goroutine-ը կանչում է ֆունկցիա, որը բլոկավորում է գործարկումը, օրինակ՝ կարդալուց ալիքի, գրառում ալիքի կամ համակարգային կանչ, որը բլոկավորում է հոսքը:
  • Երբ կանչվում է runtime.Gosched() ֆունկցիան, որը բացահայտ փոխանցում է վերահսկողությունը պլանավորողին՝ փոխելու մյուս goroutine-ին:
  • Երբ goroutine-ը ավարտվում է, պլանավորողը փոխում է մյուս պատրաստի goroutine-ին:

Go runtime-ը պարունակում է պլանավորող, որը բաժանում է goroutine-ների գործարկումը հասանելի համակարգային հոսքերին (M): Փոխանցումը տեղի է ունենում ավտոմատ կերպով՝ արդյունավետ օգտագործելու CPU-ն և խուսափելու ամբողջ ծրագրի գործարկումը բլոկավորել IO կամ սինխրոնիզացիայի օպերացիաների սպասման ժամանակ։