Junior — Middle
É possível fixar a execução de uma goroutine a um thread do sistema específico?
sobes.tech IA
Resposta da IA
No Go (Golang), as goroutines não estão vinculadas a threads específicos do sistema. O agendador do Go distribui as goroutines pelos threads do sistema operativo de forma autónoma para uma utilização eficiente dos recursos.
No entanto, se for necessário executar código no contexto de um thread específico (por exemplo, para interagir com uma biblioteca C que requer chamadas de um único thread), pode usar a função runtime.LockOSThread(). Ela fixa a goroutine atual a um thread do sistema até que runtime.UnlockOSThread() seja chamado.
Exemplo:
import (
"runtime"
)
func main() {
runtime.LockOSThread()
defer runtime.UnlockOSThread()
// código que deve ser executado num único thread do sistema
}
Mas na prática comum, não é necessário nem recomendado fixar uma goroutine a um thread, pois isso reduz a eficiência do agendador.