Wie funktioniert shared memory vs. message-passing-Handhabung von großen Daten-Strukturen?

In der Suche bei Go und Erlang-Ansatz, um die Parallelität bemerkte ich, dass Sie beide verlassen sich auf message-passing.

Dieser Ansatz offensichtlich verringert die Notwendigkeit für komplexe sperren, da es keinen gemeinsamen Staat.

Jedoch den Fall betrachten, viele Kunden wollen parallel nur-lese-Zugriff auf eine große Datenstruktur im Speicher, wie ein suffix-array.

Meine Fragen:

  • Wird die Verwendung von shared state schneller sein und weniger Speicher als message passing, Schlösser meist unnötig, da die Daten nur gelesen werden, Sie muss nur vorhanden in einer einzigen location?

  • Wie würde dieses problem angegangen werden in ein message-passing-Kontext? Wäre es ein einzelner Prozess mit Zugriff auf die Datenstruktur und die Kunden würden einfach brauchen, um nacheinander Anfrage Daten von ihm? Oder, wenn möglich, würde die Daten werden chunked zu erstellen, die mehrere Prozesse, die halten Brocken?

  • Gegeben, die Architektur moderner CPUs & Speicher, ist es viel Unterschied zwischen den beiden Lösungen, D. H., kann shared memory parallel Lesen durch mehrere Kerne, d.h. es ist keine hardware-Engpass, sonst machen beide Implementierungen etwa führen die gleiche?

InformationsquelleAutor wsorenson | 2009-11-25
Schreibe einen Kommentar