È possibile implementare, ad esempio, il blocco con tipi univoci?
Ho seguito il link fornito da Robert Harvey e ho fatto una rapida lettura. Non posso dire di aver capito tutto o di avere un alto livello di fiducia nel capire veramente quello che penso di aver capito, ma mi sembra che l'intero punto di unicità esterna e l'immutabilità di riferimento non abbia bisogno di essere bloccato.
I moderni approcci al multithreading cercano di evitare il blocco perché solo i programmatori di grande esperienza possono scrivere codice che utilizza il blocco e anche il loro codice è molto incline ad avere bug. Se si aggiunge al fatto che il codice di blocco è praticamente non verificabile, dovrebbe essere ovvio che si tratta di un modo altamente indesiderabile di fare le cose, e qualsiasi soluzione che miri a liberarci dal blocco promette a dir poco.
Il modo in cui abbiamo evitato il blocco è con il passaggio dei messaggi, il che richiede che i messaggi debbano essere immutabili. All'incirca, (a prima vista), l'immutabilità di riferimento sembra essere una tecnica che può aiutarci a garantire l'immutabilità senza dover effettivamente costruire tipi immutabili, e l'unicità esterna sembra essere una tecnica che può aiutarci a rilassare il rigoroso requisito di immutabilità a livello locale.
I tipi di unicità possono essere utilizzati per condividere dati mutabili tra thread?
Il documento non lo affermava chiaramente, ma da quello che ho capito, un cluster di oggetti esternamente unico è sicuro per i thread perché in qualche modo (davvero, come? ) È garantito che esista un solo riferimento esterno in quel cluster di oggetti, il che significa che un thread che riceve un tale riferimento può considerare gli oggetti referenziati come mutabili senza doversi preoccupare che anche qualche altro thread possa mutarli, poiché nessun altro thread può avere un altro riferimento. Sarei curioso di sapere come un tale costrutto teorico possa essere implementato e applicato.
È possibile utilizzare tipi univoci per creare primitive di sincronizzazione (come i mutex) o è necessario il passaggio dei messaggi?
Ancora una volta, da quello che ho capito, i tipi unici esternamente e l'immutabilità di riferimento hanno lo scopo di rendere inutili serrature, mutex e simili. Il passaggio dei messaggi sembra essere la strada da percorrere, e va bene.