Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Mutual Exclusion

Sabemos criar threads, e sabemos que quando elas compartilham uma variável e a modificam sem coordenação, incrementos se perdem e o contador soma menos do que deveria. Vimos isso acontecer: dez threads incrementando counter cem mil vezes cada, e o resultado final saindo 474032 em vez de 1000000.

Este capítulo é sobre a solução mais fundamental pra esse tipo de problema: garantir que, do início ao fim daquele counter++, nenhuma outra thread meta a mão na variável. A ideia se chama exclusão mútua (mutual exclusion), e é a base de quase todo o restante desta parte do livro.

Vamos começar enunciando o problema com precisão, entender o que “sincronizar” duas threads realmente significa, e então construir a ferramenta que resolve o problema na prática: o lock, e sua encarnação mais comum, o mutex.