Kann jemand erklären, was std::memory_orderim Klartext ist und wie man sie benutzt std::atomic<>? Ich habe die Referenz und einige Beispiele hier gefunden, verstehe sie aber überhaupt nicht. http://en.cppreference.com/w/cpp/atomic/memory_order
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 …
Ich arbeite in einem Projekt mit C ++ 11 und habe versucht, folgenden Code zu verwenden #include <atomic> struct A { std::atomic_int idx = 1; }; int main() { return 0; } Ich bekomme den Compilerfehler error: use of deleted function 'std::__atomic_base<_IntTp>::__atomic_base(const std::__atomic_base<_IntTp>&) [with _ITp = int]' std::atomic_int idx = …
Ich möchte tragbaren Code (Intel, ARM, PowerPC ...) schreiben, der eine Variante eines klassischen Problems löst: Initially: X=Y=0 Thread A: X=1 if(!Y){ do something } Thread B: Y=1 if(!X){ do something } in dem das Ziel ist, eine Situation zu vermeiden, in der beide Threads arbeitensomething . (Es ist in …
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 …
Kann mir jemand sagen, ob std :: atomic :: is_lock_free () nicht so statisch wie constexpr ist? Es macht für mich keinen Sinn, es nicht statisch und / oder nicht kontextuell zu haben.
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); | …
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 …
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 …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.