multithreading, memory-models, ...
-
So. Ich weiss was ich suche, aber leider fällt es mir schwer das zu "verbalisieren"

Ich suche eine genaue Beschreibung zum Thema "memory visibility" bzw. allgemein zum "memory model" mit verschiedenen CPUs (allen voran x86 Serie und Power PC G4/G5, was halt heute so verwendet wird). Speziell geht es mir um sog. "memory barriers", welche es auf den verschiedenen Plattformen gibt (load , store, full, dependent load etc.), und wie diese aussehen (assembler code).
Genauso wäre von Interesse wie ich verschiedenen Compilern beibringe dass sie über eine Bestimmte Stelle hinweg kein Reordering machen, und zwar möglichst billig, also ohne gleich eine Systemfunktion aufrufen zu müssen. MSVC 8 bietet dazu die intrinsics _ReadBarrier, _WriteBarrier und _ReadWriteBarrier an, aber bei anderen Compilern hab' ich leider keine Ahnung wie das geht

-
x86 und x86-64 führen ihre Speicherzugriffe geordnet durch. Da musst du dir nur Sorgen um den Compiler machen.
http://ridiculousfish.com/blog/archives/2007/02/17/barrier/
http://www.gelato.unsw.edu.au/lxr/source/Documentation/memory-barriers.txt
-
Hm. Biste 100% sicher? Ich hab bezüglich Core 2 mal was zum Thema Reordering gelesen... *hmmm*.
Wenn das stimmt frage ich mich nämlich auch wieso z.B. Windows zum Freigeben einer CRITICAL_SECTION nen "Interlocked" Befehl verwendet... würde ja ein einfaches "lock = 0" reichen. *hmmm*Die Links sehe ich mir dann zuhause durch (bin noch inner Arbeit), aber schonmal Danke.
Wenn noch jmd. was weiss immer her damit.