Kann ich erzwingen, cache-Kohärenz, die auf einem multicore x86 CPU?

Die andere Woche, ich schrieb einen kleinen thread-Klasse und ein one-way-message-pipe für die Kommunikation zwischen threads (zwei Rohre pro thread, offensichtlich, für die bidirektionale Kommunikation). Alles hat gut funktioniert auf meinem Athlon 64 X2, aber ich Frage mich, ob ich auf Probleme stoßen, wenn beide threads die gleichen Variablen und die lokale zwischengespeicherte Wert für diese variable auf jedem Kern war out of sync.

Ich weiß, die flüchtigen Schlüsselwort zwingt eine variable zu aktualisieren, aus dem Speicher, aber gibt es eine Möglichkeit auf multicore-x86-Prozessoren zu zwingen, die caches aller Kerne zu synchronisieren? Ist das etwas, was ich brauchen, um über, oder wird flüchtigen und ordnungsgemäße Verwendung von leichten locking-Mechanismen (ich war mit _InterlockedExchange meinen flüchtigen Rohr-Variablen) alle Fälle behandeln, wo ich schreiben möchte "lock-free" code für multicore-x86-CPUs?

Ich bin mir schon bewusst und verwendet haben, Critical Sections, Mutexe, Events, und so weiter. Meistens bin ich Frage mich, ob es gibt x86-Interna, ich bin mir nicht bewusst, welche Kraft oder kann verwendet werden, um zu erzwingen, cache-Kohärenz.

InformationsquelleAutor der Frage Furious Coder | 2009-02-17

Schreibe einen Kommentar