Shared memory - Bedarf für Synchronisierung

Habe ich ein Projekt erlebt, in denen die Kommunikation zwischen Prozessen, die mit Hilfe von shared memory (z.B. mit ::CreateFileMapping unter Windows) und jedes mal, wenn einer der Prozesse wollte informieren, dass einige Daten im shared-memory, ein Synchronisations-Mechanismus mit Namen-Veranstaltungen informiert den Interessenten, dass die Inhalte des shared memory geändert.

Ich bin besorgt über die Tatsache, dass die entsprechenden Speicher-Zäune sind nicht vorhanden für den Prozess, der liest die neuen Informationen, um zu wissen, dass es es ungültig ist die Kopie der Daten und Lesen vom Hauptspeicher, sobald es ist "veröffentlicht", indem Sie die Produzenten-Prozess.

Wissen Sie, wie kann dies erreicht werden unter Windows mit shared memory?

BEARBEITEN
Wollte nur hinzufügen, dass nach dem erstellen der Datei mapping der Prozesse verwendet MapViewOfFile () - API nur einmal und jede neue änderung auf die freigegebenen Daten verwendet, die Zeiger, die durch den ersten Aufruf von MapViewOfFile() zum Lesen der neuen Daten, die gesendet werden über shared memory. Nicht korrekte Synchronisation erfordern, dass jedes mal, wenn änderungen der Daten im shared memory des Prozesses, der liest Daten erstellen müssen, MapViewOfFile (), jedes mal ?

  • Eine gültige Synchronisations-Mechanismus, benannt Veranstaltungen haben sollte ordnungsgemäße Speicher Zäune im Ort. Haben Sie Beweise, dass dies geschehen könnte?
  • In der Tat, es ist in der Regel der Fall ist, aber ist es garantiert, das von standard/Spezifikationen/etc.?
  • Unter windows kann man mit CreateEvent-api für die Synchronisation. Ich weiß nicht, ob die Einstellung und Erwartung des Ereignisses produziert das erwerben/release notwendig mem Zäune, obwohl
InformationsquelleAutor Ghita | 2012-04-16
Schreibe einen Kommentar