Junior — Middle
Šta se dešava sa gorutinom kada se blokira tokom izvršavanja nekog procesa ili operacije?
sobes.tech АИ
Одговор од АИ
Када goroutine у Go-у блокира на операцију (на пример, читање из канала, чекање на синхронизацију, улаз-излаз), она се суспендује, а планер Go ослобађа системски ток за извршавање других goroutine-ова. Ово омогућава ефикасно коришћење системских ресурса и скалирање паралелизма.
То јест, блокирајућа операција не блокира целу ОС нит, већ само одређену goroutine. Планер прелази на друге goroutine-ове који су спремни за извршавање.
Пример:
ch := make(chan int)
func() {
val := <-ch // goroutine се блокира док не добије вредност
fmt.Println(val)
}()
ch <- 42 // откључава goroutine
У овом примеру, goroutine се блокира на читању из канала, али планер омогућава другим goroutine-овима да раде док она чека.