Jestem bardzo nowy w tym module Parallel::ForkManager w Perlu i ma on wiele zalet, więc myślę, że obsługuje on to, czego potrzebuję i po prostu jeszcze się nie zorientowałem.Czy moduł Parallel :: ForkManager() obsługuje synchronizację zmiennych globalnych?
To, co muszę zrobić, to każdy proces potomny, zapisuje niektóre aktualizacje w globalnej mapie skrótu, zgodnie z kluczową wartością obliczoną w każdym procesie potomnym. Jednakże, kiedy przystąpię do żądania mapy skrótu poza pętlą for i oczekuję, że mapa skrótu zostanie zaktualizowana po pętli, okazuje się, że mapa skrótu pozostaje pusta. Oznacza to, że chociaż aktualizacja w pętli kończy się sukcesem (przez wydrukowanie wartości), poza pętlą nie jest.
Czy ktoś wie, jak napisać taki fragment kodu, który robi to, co chcę?
Dziękuję wszystkim, teraz rozumiem! Spodziewałem się, że ForkManager() zajmie się tym problemem. :-) W moim przypadku IPC może być przesadą. Podoba mi się zwięzły sposób korzystania z ForkManager(), więc czy istnieje prosty sposób na udostępnienie globalnej tablicy skrótów między procesami za pomocą ForkManager()? – galactica
@Jin: Pobieranie danych z jednego procesu do drugiego * to * IPC. To właśnie oznacza. Nie musi to być jednak trudne. – hobbs
@Jin: tak, użyj powiązanego skrótu; zobacz http://search.cpan.org/perldoc/BerkeleyDB na jeden. – ysth