Ich bin sehr neu zu diesem Parallel::ForkManager Modul in Perl und es hat eine Menge Credits, so denke ich, dass es unterstützt, was ich brauche, und ich habe gerade noch nicht herausgefunden.Unterstützt das Modul Parallel :: ForkManager() die Synchronisation auf globalen Variablen?
Was ich tun muss, ist in jedem Kindprozess, es schreibt einige Updates in eine globale Hash-Map, entsprechend dem Schlüsselwert, der in jedem Kindprozess berechnet wird. Wenn ich jedoch eine Hash-Map außerhalb der for-Schleife beanspruche und erwarte, dass die Hash-Map nach der Schleife aktualisiert wird, stellt sich heraus, dass die Hash-Map leer bleibt. Dies bedeutet, obwohl das Update innerhalb der Schleife erfolgreich ist (durch Ausdrucken des Wertes), ist dies außerhalb der Schleife nicht der Fall.
Weiß jemand, wie man ein solches Stück Code schreibt, der tut, was ich will?
Danke an alle, jetzt verstehe ich! Ich habe erwartet, dass der ForkManager() sich um dieses Problem kümmert. :-) In meinem Fall könnte IPC übertrieben sein. Ich mag die prägnante Art der Verwendung von ForkManager(), gibt es also eine einfache Möglichkeit, eine globale Hash-Map zwischen Prozessen mit ForkManager() zu teilen? – galactica
@Jin: Daten von einem Prozess zu einem anderen erhalten * ist * IPC. Das ist was es bedeutet. Es muss jedoch nicht schwer sein. – hobbs
@Jin: Ja, verwende einen gebundenen Hash; siehe http://search.cpan.org/perldoc/BerkeleyDB für einen. – ysth