Sobes.tech
Junior — Middle

Ҳангоми боздоштани як гурутӣ дар иҷрои ягон раванди ё амал чӣ мешавад?

sobes.tech AI

Ҷавоб аз AI

Когато горутин дар Go блокира на иҷрои операция (масалан, хондан аз канал, интизорӣ барои ҳамоҳангсозӣ, воридот-баромад), он ба ҳолати истироҳат мебарояд ва нақшакашии Go раванди системиро барои иҷрои дигар горутинҳо озод мекунад. Ин имкон медиҳад, ки истифодаи самараноки захираҳои системӣ ва васеъшавии параллелизм таъмин карда шавад.

Яъне, амалиёти блоккунанда тамоми сӯзишвории системаро намебандад, балки танҳо горутин махсусро. Нақшакашӣ ба дигар горутинҳо мегузарад, ки омодаи иҷро ҳастанд.

Масалан:

ch := make(chan int)
func() {
    val := <-ch // горутин дар ҳоле, ки арзиш нагирифтааст, блок мешавад
    fmt.Println(val)
}()
ch <- 42 // горутинро озод мекунад

Дар ин мисол, горутин дар хондани канал блок мешавад, аммо нақшакашӣ ба дигар горутинҳо иҷозат медиҳад, ки дар ҳоле ки он интизор аст, кор кунанд.