Moje pytanie jest dość proste. Dlaczego nie jest std::atomic<double>
implemented completely? Wiem, że ma do czynienia z zablokowanym dostępem zmiennym. Ale tak naprawdę nie widzę, dlaczego to nie powinno być możliwe na podwójnym.Dlaczego nie jest w pełni zaimplementowane atomowe podwójne?
Podano, że można użyć dowolnego typu trivially copyable. I oczywiście podwójne jest wśród nich. Więc podstawowe operacje powinny być w porządku (ustawienie, czytanie itp.). Jednak w liczbach całkowitych możliwy jest dodatkowy zestaw operacji (fetch_add, ++, + =, etc).
Podwojenie niewiele różnią się od tych typów. Jest natywna, banalnie kopiowana itd. Dlaczego standard nie zawierał podwójnego z tymi typami?
Sądzę, że powodem jest to, że większość procesorów nie obsługuje atomowych operacji "podwójnych". Jak więc to wdrożyć? – Angew
Czy 'double' jest nawet trywialnie kopiowalny w ścisłym tego słowa znaczeniu, widząc jak jego pamięć nie jest identyczna z pamięcią rejestru na większości obecnych procesorów? Ale nawet jeśli tak, to czy w ogóle ma sens wykonywanie operacji atomowych na danych zmiennoprzecinkowych? Można by powiedzieć: "pewnie, czemu nie?", Ale trudno mi sobie wyobrazić, dlaczego ktoś chciałby coś takiego zrobić. Liczby całkowite i wskaźniki oraz wskaźniki podwójnego typu są klasyfikowane jako duże liczby całkowite, na pewno. Ale dane zmiennoprzecinkowe? – Damon
@Damon To może brzmieć naiwnie, ale jeśli mam podwójną wartość w klasie. Chcę napisać to na 1 wątku i przeczytać na innym. Atomic, wydaje mi się, że mam iść. – laurisvr