Standard pozwala, aby typ był czasami bez blokady.
sekcja 29.4 lock-wolne nieruchomość
atomowej _..._ makra LOCK_FREE wskazać właściwość blokowania wolne od odpowiednich typów atomowych, z podpisanych i niepodpisanych wariantów zgrupowane razem. Właściwości mają również zastosowanie do odpowiednich (częściowych) specjalizacji szablonu atomowego. Wartość 0 wskazuje, że typy nigdy nie są blokowane. Wartość 1 oznacza , że typy są czasami wolne od blokady. Wartość 2 wskazuje, że typy są zawsze wolne od blokady.
W C++ atomic paper n2427 stany Powodem:
... Wniosek przewiduje blokady wolna czasu wykonywania funkcji zapytań raczej niż kompilacji stałych ponieważ kolejne implementacje platformie mogą uaktualnić blokowania operacje z blokadami, czyli , powszechne jest, że systemy wyodrębniają takie obiekty za bibliotekami dynamicznymi , a my chcemy pozostawić tę możliwość otwartą. Ponadto, zalecamy, aby implementacje bez sprzętowej pomocy atomowej stosowały tę technikę w postaci . ...
a także (jak Jesse Good podkreślić):
Wniosek przewiduje blokady wolne funkcje zapytań na temat poszczególnych obiektów niż całych rodzajów celu umożliwienia nieunikniony mylące zmienne atomowych bez pogarszania wydajności wyrównane zmienne atomowe
Czy nazywa się 'is_instance_free'? Nie. QED. –
Wygląda na to, że dzieje się tak z powodu wydajności [zacytuj tutaj] (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2427.html): "Wniosek zapewnia blokadę funkcje zapytań na poszczególnych obiektach zamiast na typach całkowitych, aby umożliwić nieuniknioną niewspółosiowość zmiennych atomowych bez negatywnego wpływu na wydajność dopasowanych zmiennych atomowych. " –
@JesseDobre brzmienie brzmi jak odpowiedź. Dlaczego to jest komentarz? ;) –