ExpertiDict

Go · Intermediário · Inglês · Técnico

deadlock

/ˈdɛd.lɑk/substantivo

Situação em que goroutines ficam bloqueadas para sempre, cada uma esperando algo que outra deveria fazer. O runtime detecta quando todas estão paradas e encerra o programa.

Onde usar

Aparece como 'fatal error: all goroutines are asleep - deadlock!' ao enviar para channel sem receptor ou ao esquecer um Unlock. Em servidores, o deadlock parcial não é detectado e só se vê travado.

Em código

var mu sync.Mutex
mu.Lock()
mu.Lock() // trava para sempre
// fatal error: all goroutines are asleep

Exemplos

The program died with all goroutines asleep, a classic deadlock.

O programa morreu com todas as goroutines dormindo, um deadlock clássico.

Locking the same mutex twice causes a deadlock.

Travar o mesmo mutex duas vezes causa um deadlock.

Cuidado

O runtime só detecta deadlock quando todas as goroutines estão bloqueadas; se alguma ainda roda, o travamento passa em silêncio.

Sinônimos

travamento mútuo

Origem

De dead, 'morto', e lock, 'trava'.

Veja também

Todos os termos de Go