Senior
O que é uma goroutine? Como ela é estruturada?
sobes.tech IA
Resposta da IA
Uma goroutine é um fio de execução leve na linguagem Go. Ao contrário dos fios do sistema, as goroutines são geridas pelo runtime do Go e têm uma pilha muito pequena (começando com alguns quilobytes e podendo crescer dinamicamente). Isto permite executar centenas de milhares de goroutines simultaneamente com baixos custos de overhead.
Estrutura de uma goroutine:
- Ao criar uma goroutine (com o operador
go), o agendador do Go coloca-a na fila de tarefas prontas para execução. - O runtime do Go usa um agendamento M:N: M threads do sistema (threads OS) atendem N goroutines.
- As goroutines trocam de contexto ao nível do runtime, o que é mais rápido do que trocar de threads do sistema.
- Cada thread (M) pode executar várias goroutines (N), alternando entre elas em bloqueios ou conforme necessário.
Exemplo de criação de uma goroutine:
func sayHello() {
fmt.Println("Olá da goroutine")
}
func main() {
go sayHello() // inicia a goroutine
time.Sleep(time.Second) // espera para que a goroutine tenha tempo de executar
}