Sobes.tech
Senior

O que é um deadlock?

sobes.tech IA

Resposta da IA

Deadlock (interbloqueio) é uma situação em ambientes multithread ou multiprocessamento, onde dois ou mais processos (ou threads) bloqueiam-se mutuamente, esperando pela libertação de recursos ocupados pelo outro.

Exemplo: O thread A capturou o recurso 1 e espera pelo recurso 2, enquanto o thread B capturou o recurso 2 e espera pelo recurso 1. Nenhum deles consegue continuar — ocorre um deadlock.

Em Go, um deadlock pode ocorrer, por exemplo, se uma goroutine tentar enviar ou receber dados de um canal, mas outra goroutine não estiver pronta para receber ou enviar, e todas as goroutines estiverem bloqueadas.

Exemplo de deadlock em Go:

func main() {
    ch := make(chan int)
    ch <- 1 // Tentando enviar para um canal sem receptor — o programa ficará bloqueado
}

Aqui, o programa ficará travado porque não há nenhuma goroutine lendo do canal, e o envio fica bloqueado para sempre.

Para evitar deadlocks, é importante projetar corretamente a interação entre threads e usar mecanismos de sincronização com cuidado.