Junior — Middle
È possibile assegnare l'esecuzione di una goroutine a un thread di sistema specifico?
sobes.tech AI
Risposta dell'AI
In Go (Golang), le goroutine non sono legate a thread di sistema specifici. Il scheduler di Go distribuisce autonomamente le goroutine sui thread del sistema operativo per un uso efficiente delle risorse.
Tuttavia, se è necessario eseguire del codice nel contesto di un thread specifico (ad esempio, per interagire con una libreria C che richiede chiamate da un singolo thread), si può usare la funzione runtime.LockOSThread(). Questa blocca la goroutine corrente a un thread di sistema fino a quando non si chiama runtime.UnlockOSThread().
Esempio:
import (
"runtime"
)
func main() {
runtime.LockOSThread()
defer runtime.UnlockOSThread()
// codice che deve essere eseguito in un singolo thread di sistema
}
Ma nella pratica comune, non è necessario né consigliabile legare una goroutine a un thread, poiché ciò riduce l'efficienza del scheduler.