Eine atomare Operation ist unteilbar. Dieser Begriff wird unter anderem verwendet, um Transaktionen in Datenbanken, Zugriffe auf niedriger Ebene in Multithread-Programmen und Dateisystemoperationen zu beschreiben.
Ab Seite 291 der OCP Java SE 6 Programmer Practice Exams, Frage 25: public class Stone implements Runnable { static int id = 1; public void run() { id = 1 - id; if (id == 0) pick(); else release(); } private static synchronized void pick() { System.out.print("P "); System.out.print("Q …
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
Nach dem, was ich von Herb Sutter und anderen gelesen habe, würde man denken, dass die volatilegleichzeitige Programmierung völlig orthogonale Konzepte waren, zumindest was C / C ++ betrifft. In der GCC- Implementierung haben jedoch alle std::atomicMitgliedsfunktionen das volatileQualifikationsmerkmal. Gleiches gilt für Anthony Williams ' Implementierung von std::atomic. Also, was …
Jetzt, da C ++ 11 Multithreading hat, habe ich mich gefragt, wie man faul initialisierte Singleton ohne Verwendung von Mutexen (aus Perf-Gründen) richtig implementiert. Ich habe mir das ausgedacht, aber ich bin nicht wirklich gut darin, sperrfreien Code zu schreiben, also suche ich nach besseren Lösungen. // ConsoleApplication1.cpp : Defines …
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 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 …
Erwägen: void foo() { std::vector<std::atomic<int>> foo(10); ... } Sind die Inhalte von foo jetzt gültig? Oder muss ich sie explizit durchlaufen und initialisieren? Ich habe Godbolt überprüft und es scheint in Ordnung zu sein, jedoch scheint der Standard in diesem Punkt sehr verwirrt zu sein. Der Konstruktor std :: vector …
Ich habe mehrere Artikel, Vorträge und Fragen zum Stackoverflow angehört und gelesen std::atomicund möchte sichergehen, dass ich sie gut verstanden habe. Weil ich immer noch ein bisschen verwirrt bin mit der Sichtbarkeit von Cache-Zeilen-Schreibvorgängen aufgrund möglicher Verzögerungen bei MESI-Cache-Kohärenzprotokollen (oder abgeleiteten Protokollen), Speicherpuffern, ungültigen Warteschlangen usw. Ich habe gelesen, dass …
Voraussetzung: Ich arbeite mit einer in ARM eingebetteten (fast Bare-Metal-) Umgebung, in der nicht einmal C ++ 11 (mit std::atomic<int>) verfügbar ist. Vermeiden Sie daher Antworten wie " Verwendenstd::atomic<int> Sie einfach Standard-C ++ ": Ich kann nicht . Ist diese ARM- Implementierung von AtomicInt korrekt? (Angenommen, die ARM-Architektur ist ARMv7-A …
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.