Atomare Operation Threads?
-
Bei der verwendung gleicher Ressorucen mehrer Thread , kann ich ja auch
eigene Syncronisation verzichten, wenn ich "atomare" Werte lese bzz. schreibe. Sehr ich das richtig?Was sind genau Atomare Operationen?
double x; x= 2; //<--- das hier?
-
hängt vom system ab
-
BorisDieKlinge schrieb:
Was sind genau Atomare Operationen?
double x; x= 2; //<--- das hier?Kommt drauf an.
Wie ich dir schonmal gesagt habe, steht im C++-Standard nichts über Nebenläufigkeit. Daher kann auch nicht allgemein gesagt werden, was eine atomare Operation ist. Das musst du in der Dokumentation deines Compilers nachlesen.
Für MSVC gilt beispielsweise, dass Lese- und Schreibzugriffe auf 32-Bit-Variablen atomar sind, und wenn du auf einem 64-Bit-Windows arbeitest, auch die auf 64-Bit-Variablen.
Es gibt auch vom Betriebssystem bereitgestellte Funktionen für atomare Operationen, unter Windows z.B. die Interlocked-Funktionen.
-
hmm, d.h. bool, float, int sind in demfall atomar?
-
nein, hängt auch von der operation ab
-
BorisDieKlinge schrieb:
hmm, d.h. bool, float, int sind in demfall atomar?
Nein ! Denn "bool, float, int" sind Datentypen.
Nur Operationen können "atomar" sein.Gruß,
Simon2.