Używanie blokad i muteksów jest nielegalne w przypadku trudnych wywołań zwrotnych w czasie rzeczywistym. Zablokowane zmienne wolne mogą być odczytywane i zapisywane w różnych wątkach. W języku C definicja języka może, ale nie musi być zepsuta, ale większość kompilatorów wypluwa użyteczny kod zestawu, biorąc pod uwagę, że zmienna jest deklarowana jako lotna (wątek czytnika traktuje zmienną jako rejestr sprzętowy, a tym samym faktycznie wydaje instrukcje ładowania przed użyciem zmiennej, który działa wystarczająco dobrze w większości systemów wieloprocesorowych współpracujących z pamięcią podręczną.)Współdzielona zmienna blokująca w Swift? (działające zmienne)
Czy ten typ dostępu zmiennego można znaleźć w Swift? Czy zamiast tego zamiast języka migowego należy dodać wbudowany język assemblera lub pamięć podręczną danych?
Dodano: Czy będzie używany wywołanie OSMemoryBarrier() (z OSAtomic.h) przed i po oraz każde użycie lub aktualizacja dowolnych potencjalnie zmiennych międzywątkowych (takich jak "lock-free" liczniki stanu fifo/buffer, itp.) w Swift wymusza odpowiednio uporządkowane ładowanie pamięci i instrukcje przechowywania (nawet na procesorach ARM)?
Dlaczego każdy język wysokiego poziomu powinien definiować konstrukcję dla funkcji, która tylko (wydaje się) działać dla pewnej architektury sprzętowej, ale może być skompilowana dla wielu, w tym dla słabo zamawianego modelu pamięci (ARM)? Co więcej, C 'volatile' nigdy nie działa _reliable_ dla tego, czego szukasz. – CouchDeveloper
Jednym z twierdzeń jest to, że Swift ma na celu być użytecznym językiem programowania systemu siłowego. Systemy przemysłowe są często połączone z konkretnymi danymi fizycznymi i kontrolami klienta, które mają restrykcje operacyjne w czasie rzeczywistym. – hotpaw2
W takich scenariuszach nadal można korzystać z interfejsu API C. Ale 'volatile' nie będzie odpowiedni do rozwiązywania równoczesnych problemów. Czy zapoznałeś się z [biblioteką operacyjną Atomics] (http://en.cppreference.com/w/c/atomic) w standardzie C11? Są prymitywy wolne od blokady. – CouchDeveloper