Mutex
Mutex<T>
garante exclusĂŁo mĂștua e permite acesso mutĂĄvel a T
por trĂĄs de uma interface somente de leitura (outra forma de mutabilidade interna):
Observe como temos uma implementação impl<T: Send> Sync for Mutex<T>
encoberta.
Speaker Notes
This slide should take about 14 minutes.
Mutex
em Rust Ă© semelhante a uma coleção com apenas um elemento â os dados protegidos.- NĂŁo Ă© possĂvel esquecer de adquirir o mutex antes de acessar os dados protegidos.
- VocĂȘ pode obter um
&mut T
de um&Mutex<T>
obtendo um lock. OMutexGuard
garante que o&mut T
não sobrevive além do lock obtido. Mutex<T>
implementa ambosSend
eSync
sse (se e somente se)T
implementaSend
.- Um lock para leitura e gravação:
RwLock
. - Por que
lock()
retorna umResult
?- Se o thread que manteve o
Mutex
entrou em pĂąnico, oMutex
torna-se âenvenenadoâ para sinalizar que os dados protegidos podem estar em um estado inconsistente. Chamarlock()
em um mutex envenenado falha com umPoisonError
. VocĂȘ pode chamarinto_inner()
no erro para recuperar os dados de qualquer maneira.
- Se o thread que manteve o