Apakah mungkin untuk menerapkan, misalnya, penguncian dengan tipe unik?
Saya mengikuti tautan yang diberikan Robert Harvey dan saya membaca cepat. Saya tidak bisa mengatakan bahwa saya memahami segalanya atau bahwa saya memiliki tingkat kepercayaan yang tinggi bahwa saya benar - benar memahami apa yang saya pikir saya mengerti, tetapi tampaknya bagi saya bahwa seluruh poin keunikan eksternal dan ketidakberubahan referensi adalah tidak perlu mengunci.
Pendekatan modern untuk multithreading mencoba menghindari penguncian karena hanya programmer yang sangat berpengalaman yang dapat menulis kode yang menggunakan penguncian, dan bahkan kode mereka sangat rentan terhadap bug. Jika Anda menambahkan bahwa fakta bahwa kode penguncian sebenarnya tidak dapat dipecahkan, harus jelas bahwa itu adalah cara yang sangat tidak diinginkan dalam melakukan sesuatu, dan solusi apa pun yang bertujuan untuk membebaskan kita dari penguncian menjanjikan untuk sedikitnya.
Cara kami menghindari penguncian adalah dengan pengiriman pesan, yang mengharuskan pesan harus tidak berubah. Secara kasar, (sekilas,), referensi keabadian tampaknya merupakan teknik yang dapat membantu kami menjamin keabadian tanpa harus benar-benar membangun jenis yang tidak dapat diubah, dan keunikan eksternal tampaknya merupakan teknik yang dapat membantu kami merelaksasi persyaratan kekekalan yang ketat secara lokal.
Bisakah tipe keunikan digunakan untuk berbagi data yang dapat diubah di seluruh utas?
Makalah itu tidak secara jelas menyatakannya, tetapi dari apa yang saya pahami, sekelompok objek yang unik secara eksternal aman karena entah bagaimana (sungguh, bagaimana? ) Dijamin bahwa hanya ada satu referensi luar ke dalam kumpulan objek tersebut, yang berarti bahwa sebuah utas yang menerima referensi semacam itu dapat memperlakukan objek yang dirujuk sebagai bisa berubah-ubah tanpa harus khawatir bahwa beberapa utas lain juga dapat memutasinya, karena tidak ada utas lain yang mungkin memiliki referensi lain. Saya ingin tahu bagaimana konstruksi teoretis seperti itu dapat diimplementasikan dan ditegakkan.
Apakah mungkin untuk menggunakan tipe unik untuk membangun primitif sinkronisasi (seperti mutex), atau apakah pesan perlu?
Sekali lagi, dari apa yang saya pahami, tipe unik eksternal dan referensi keabadian dimaksudkan untuk membuat kunci, mutex, dan sejenisnya tidak perlu. Pesan lewat tampaknya menjadi cara untuk pergi, dan itu bagus.