Sobes.tech
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-овима да раде док она чека.