Zugriff auf 64 Bit Int
-
Moin,
ich möchte mit C++ auf ein 64 Bit Int zugreifen. Mein OS ist SuSE Linux 11.4 mit 32 Bit. Meine Frage ist nun: Ist dieser Zugriff atomar?
Ich frage, weil ich den Eindruck habe, dass das nicht so ist (nutze Threads). Also bei nem 32 Bit-Int wärs ja wohl atomar. Aber wird hier vllt das schreiben "aufgesplitted" in:
- schreibe erste 32 Bit atomar
- schreibe zweite 32 Bit atomar
Ich würde mich sehr über Antworten freuen!
Gruß,
Johannes
-
Ausprobieren, schau dir den generierten Assemblercode an. Was du wahrscheinlich suchst, ist InterlockExchange oder aehnliches fuer Linux. Sollte dein Prozessor nicht allzu alt sein, kannst du dir mit Hilfe von http://en.wikipedia.org/wiki/Compare_and_swap oder den entsprechenden Compilerintrinsics die Funktionalitaet nachbauen. Was es sonst so noch gibt: http://www.niallryan.com/node/137 , /usr/include/asm/atomic.h , http://stackoverflow.com/questions/3343589/how-do-i-use-the-lock-asm-prefix-to-read-a-value , http://www.hpl.hp.com/research/linux/atomic_ops/index.php4 . Darueber hinaus unterstuetzt der aktuelle gcc bereits atomare Operationen des neuen Standards C++0x.