Attualmente sto leggendo C ++ Concurrency in Action di Anthony Williams e sto affrontando un ostacolo di riflessione.
Per prima cosa descrive deadlock come quando due thread si bloccano simultaneamente (almeno, è così che l'ho capito), il che ha senso.
Tuttavia, continua a spiegare come è possibile bloccare due mutex allo stesso tempo. Ovviamente questo ha una funzione, ma con la comprensione sopra (presumibilmente sbagliata) che avrebbe istantaneamente bloccato entrambi i thread.
Da quell'ostacolo ne nasce uno nuovo; ovviamente non si bloccherà, il che significa che i mutex devono avere un uso più avanzato del semplice consentire a un singolo thread di lavorare in un processo. Nel libro, i mutex sono dati a oggetti particolari.
Questo mi porta alle mie domande generali: I mutex sono assegnati a regioni di memoria specifiche , come oggetti? Se sì, come?
Il libro svolge un ottimo lavoro nello spiegare come i mutex possono essere usati, ma non descrive mai realmente quali mutex sono a un livello basso. Mi rendo conto che sono specifici per l'implementazione, ma non ho mai capito veramente cosa fanno esattamente o come le funzioni di blocco li usano.