Junior — Middle
Бир гурутин кандай болот, эгер ал кандайдыр бир процесс же операцияны аткарууда тоскоолдукка учраса?
sobes.tech AI
AIден жооп
Go'да бир goroutine бир операцияда (мисалы, каналдан окуу, синхрондоштуруу күтүүсү, кирүү-чыгуу) блоктолгондо, ал токтоп калат жана Go'дун пландагычы системалык жипти бошотуп, башка goroutine'лерди иштетүүгө мүмкүндүк берет. Бул системалык ресурстарды эффективдүү пайдаланууга жана параллелизмди масштабдоого жардам берет.
Демек, блоктоочу операция бүт системалык жипти эмес, белгилүү бир goroutine'ди гана блоктойт. Пландарчы башка ишке даяр goroutine'лерге өтөт.
Мисал:
ch := make(chan int)
func() {
val := <-ch // goroutine, маанини алгандан кийин блоктолот
fmt.Println(val)
}()
ch <- 42 // goroutine'ди ачат
Бул мисалда, goroutine каналдан окуп жатканда блоктолот, бирок пландарчы башка goroutine'лер иштей берет, ал эми ал күтүп жатат.