Als «stdatomic» getaggte Fragen



3
Wo ist die Sperre für ein std :: atomic?
Wenn eine Datenstruktur mehrere Elemente enthält, kann die atomare Version nicht (immer) sperrfrei sein. Mir wurde gesagt, dass dies für größere Typen gilt, da die CPU die Daten nicht atomar ändern kann, ohne eine Art Sperre zu verwenden. zum Beispiel: #include <iostream> #include <atomic> struct foo { double a; double …
71 c++  c++11  x86  atomic  stdatomic 



1
C11 Atomic Acquire / Release und x86_64 mangelnde Lade- / Speicherkohärenz?
Ich habe Probleme mit Abschnitt 5.1.2.4 des C11-Standards, insbesondere mit der Semantik von Release / Acquire. Ich stelle fest, dass https://preshing.com/20120913/acquire-and-release-semantics/ (unter anderem) besagt, dass: ... Die Release-Semantik verhindert, dass die Schreibfreigabe mit einer Lese- oder Schreiboperation, die ihr in der Programmreihenfolge vorausgeht, im Speicher neu angeordnet wird. Also für …


1
Wie ordne ich einen Vektor von Atomtypen zu?
Wie kann ich die Elemente eines Vektors einem Atomtyp zuordnen? #include <iostream> #include <thread> #include <vector> using namespace std; int main() { vector<atomic<bool>> myvector; int N=8; myvector.assign(N,false); cout<<"done!"<<endl; } https://wandbox.org/permlink/lchfOvqyL3YKNivk prog.cc: In function 'int main()': prog.cc:11:28: error: no matching function for call to 'std::vector<std::atomic<bool> >::assign(int&, bool)' 11 | myvector.assign(N,false); | …

1
Warum benötigen GCC Atomic Builtins eine zusätzliche "generische" Version?
Laut https://gcc.gnu.org/onlinedocs/gcc/_005f_005fatomic-Builtins.html gibt es: type __atomic_load_n (type *ptr, int memorder) und (das "generische"): void __atomic_load (type *ptr, type *ret, int memorder) dann void __atomic_store_n (type *ptr, type val, int memorder) und ("das Generikum") void __atomic_store (type *ptr, type *val, int memorder) usw. Was ist generisch an den letzteren Versionen (das …

2
Wie wird std :: atomic_ref für nichtatomare Typen implementiert?
Ich frage mich, wie std::atomic_refeffizient (eine std::mutexpro Objekt) für nichtatomare Objekte implementiert werden kann , da die folgende Eigenschaft ziemlich schwer durchzusetzen scheint: Atomoperationen, die über eine atomare Referenz auf ein Objekt angewendet werden, sind atomar in Bezug auf atomare Operationen, die über eine andere atomare Referenz angewendet werden, die …
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.