Junior — Middle
Se poate fixa executarea unei goroutine pe un fir de sistem specific?
sobes.tech AI
Răspuns de la AI
În Go (Golang), goroutine-urile nu sunt legate de fire de sistem specifice. Planificatorul Go distribuie singur goroutine-urile pe firele de sistem pentru o utilizare eficientă a resurselor.
Cu toate acestea, dacă este necesar să executați cod în contextul unui anumit fir (de exemplu, pentru a interacționa cu o bibliotecă C care necesită apeluri dintr-un singur fir), puteți folosi funcția runtime.LockOSThread(). Aceasta fixează goroutine-ul curent pe un fir de sistem până când se apelează runtime.UnlockOSThread().
Exemplu:
import (
"runtime"
)
func main() {
runtime.LockOSThread()
defer runtime.UnlockOSThread()
// cod care trebuie să ruleze într-un singur fir de sistem
}
Dar în practica obișnuită, nu este necesar sau recomandat să legați o goroutine de un fir, deoarece acest lucru reduce eficiența planificatorului.