Чи можливо реалізувати, наприклад, блокування з унікальними типами?
Я перейшов за посиланням, яке надав Роберт Харві, і я швидко перечитав. Я не можу сказати, що я все зрозумів, або що у мене високий рівень впевненості, що я дійсно зрозумів те, що, на мою думку, зрозумів, але мені здається, що вся суть зовнішньої унікальності та незмінність еталону полягає в тому, що немає необхідності в блокуванні.
Сучасні підходи до багатопотокової роботи намагаються уникати блокування, оскільки тільки досвідчені програмісти можуть писати код, який використовує блокування, і навіть їх код дуже схильний до помилок. Якщо додати ще й той факт, що код блокування практично не можна визначити, має бути очевидним, що це дуже небажаний спосіб робити справи, і будь-яке рішення, спрямоване на звільнення від блокування, обіцяє найменше.
Те, як ми уникали блокування, - це передача повідомлень, що вимагає, щоб повідомлення були незмінними. Приблизно (на перший погляд) еталонна незмінність представляється технікою, яка може допомогти нам гарантувати незмінність без необхідності конструювати незмінні типи, а зовнішня унікальність виявляється технікою, яка може допомогти нам розслабити сувору вимогу незмінність на місцях.
Чи можна використовувати унікальні типи для обміну змінними даними між потоками?
У документі це чітко не зазначено, але, наскільки я розумію, зовнішній унікальний кластер об'єктів є безпечним для потоків, тому що якось (справді, як? ) Гарантується, що в цьому кластері об’єктів існує лише одна зовнішня посилання, це означає, що потік, що отримує таку посилання, може ставитися до посилаються об'єктів як до змінних, не турбуючись про те, що якийсь інший потік також може мутувати їх, оскільки жоден інший потік не може мати іншого посилання. Мені було б цікаво дізнатись, як можна реалізувати та застосувати такий теоретичний конструкт.
Чи можливо використовувати унікальні типи для побудови примітивів для синхронізації (як мутекси), чи потрібне передавання повідомлення?
Знову ж таки, наскільки я розумію, зовнішні унікальні типи та незмінність посилань мають на меті зробити замки, мютекси тощо тощо непотрібними. Здається, передача повідомлень - це шлях, і це добре.