Czy można wdrożyć na przykład blokowanie przy użyciu unikalnych typów?
Podążyłem za linkiem podanym przez Roberta Harveya i szybko go przeczytałem. Nie mogę powiedzieć, że wszystko zrozumiałem, ani że mam wysoki poziom pewności, że naprawdę zrozumiałem to, co myślę, że zrozumiałem, ale wydaje mi się, że całą istotą zewnętrznej wyjątkowości i niezmienności odniesienia nie jest potrzeba blokowania.
Nowoczesne podejście do wielowątkowości stara się unikać blokowania, ponieważ tylko bardzo doświadczeni programiści mogą pisać kod wykorzystujący blokowanie, a nawet ich kod jest podatny na błędy. Jeśli dodasz do tego fakt, że kod blokujący jest praktycznie nie do przetestowania, powinno być oczywiste, że jest to wysoce niepożądany sposób robienia rzeczy, a każde rozwiązanie mające na celu uwolnienie nas od blokowania jest co najmniej obiecujące.
Unikaliśmy blokowania poprzez przekazywanie wiadomości, co wymaga, aby wiadomości były niezmienne. Z grubsza (na pierwszy rzut oka) niezmienność referencyjna wydaje się być techniką, która może nam pomóc zagwarantować niezmienność bez konieczności konstruowania niezmiennych typów, a wyjątkowość zewnętrzna wydaje się być techniką, która może pomóc nam złagodzić lokalnie rygorystyczny wymóg niezmienności.
Czy można używać typów unikatowości do udostępniania zmiennych danych w wątkach?
W artykule nie podano tego jasno, ale z tego, co rozumiem, zewnętrzna unikatowa grupa obiektów jest bezpieczna dla wątków, ponieważ w jakiś sposób (naprawdę, jak? ) Jest zagwarantowane, że istnieje tylko jedno odniesienie zewnętrzne do tej grupy obiektów, co oznacza, że wątek otrzymujący takie odwołanie może traktować obiekty, do których istnieją odniesienia, jako zmienne bez obawy, że jakiś inny wątek również może je mutować, ponieważ żaden inny wątek nie może mieć innego odniesienia. Byłbym ciekawy, jak taki teoretyczny konstrukt można wdrożyć i egzekwować.
Czy można używać unikalnych typów do budowania operacji podstawowych synchronizacji (takich jak muteksy), czy też przekazywanie komunikatów jest konieczne?
Ponownie, z tego, co rozumiem, zewnętrznie unikalne typy i niezmienność odniesienia mają na celu uczynienie blokad, muteksów i tym podobnych niepotrzebnymi. Przekazywanie wiadomości wydaje się być dobrą drogą i to dobrze.