Junior — Middle
Ce se întâmplă cu o goroutine atunci când se blochează în timpul executării unui proces sau operațiuni?
sobes.tech AI
Răspuns de la AI
Când o gorutină în Go se blochează pe o operație (de exemplu, citirea dintr-un canal, așteptarea sincronizării, intrare/ieșire), ea este suspendată, iar planificatorul Go eliberează firul de sistem pentru a executa alte goroutines. Acest lucru permite utilizarea eficientă a resurselor sistemului și scalarea paralelismului.
Adică, o operație blocantă nu blochează întregul fir de sistem de operare, ci doar goroutine-ul specific. Planificatorul trece la alte goroutines care sunt gata pentru execuție.
Exemplu:
ch := make(chan int)
func() {
val := <-ch // goroutine-ul se blochează până primește o valoare
fmt.Println(val)
}()
ch <- 42 // deblochează goroutine-ul
În acest exemplu, goroutine-ul se blochează la citirea din canal, dar planificatorul permite altor goroutines să funcționeze în timp ce ea așteaptă.