Frage

Zwei Windows-Prozesse haben Speicher die gleiche freigegebene Datei abgebildet. Wenn die Datei von Zählern besteht, ist es angebracht, die Interlocked* Funktionen (wie InterlockedIncrement) zu verwenden, um diese Zähler zu aktualisieren? Werden Personen, die Zugang über Prozesse synchronisieren? Oder brauche ich wie ein Mutex etwas schwerer, benutzen? Oder vielleicht der Shared-Memory-Mechanismus selbst gewährleistet eine konsistente Ansichten.

War es hilfreich?

Lösung

MSDN :

  

...

     

Die Interlocked API

     

Die verzahnt Funktionen bieten eine   einfacher Mechanismus zum Synchronisieren   Zugriff auf eine Variable, die durch geteilt   mehrere Threads. Sie auch durchführen   Operationen auf Variablen in einem Atom   Weise. Die Fäden unterschiedlicher   Prozesse können diese Funktionen verwenden, wenn   die Variablen im gemeinsam genutzten Speicher.

Also, ja, es ist sicher mit dem Shared-Memory-Ansatz.

Andere Tipps

Die ineinandergreifenden Funktionen bestimmt sind, für genau diese Art der Verwendung.

http://msdn.microsoft.com/en-us/ Bibliothek / ms684122.aspx :

  

Die Fäden unterschiedlicher Prozesse können diese Funktionen nutzen, wenn die Variablen im gemeinsam genutzten Speicher sind.

Natürlich, wenn Sie mehr als ein Element atomar aktualisiert haben müssen, müssen Sie mit einem Mutex oder einem anderen Synchronisationsobjekt gehen, die über Prozesse hinweg funktioniert. Es gibt nichts, eingebaut in den gemeinsam genutzten Speichermechanismus Synchronisation für den Zugriff auf den gemeinsam genutzten Speicher zu schaffen -. Sie werden die verriegelten Funktionen oder ein Synchronisationsobjekt verwenden müssen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top