Я очень новичок в этом модуле Parallel::ForkManager в Perl, и у него много кредитов, поэтому я думаю, что он поддерживает то, что мне нужно, и я еще не понял.Поддерживает ли Parallel :: ForkManager() синхронизацию глобальных переменных?
Что нужно сделать в каждом дочернем процессе, он записывает некоторые обновления в глобальную карту хэша в соответствии с значением ключа, вычисленным в каждом дочернем процессе. Однако, когда я продолжаю требовать хэш-карту вне цикла for и ожидаю, что хэш-карта обновится после цикла, выясняется, что хэш-карта остается пустой. Это означает, что хотя обновление внутри цикла успешно (путем печати значения), вне цикла это не так.
Кто-нибудь знает, как написать такой кусок кода, который делает то, что я хочу?
Спасибо всем, теперь я понимаю! Я ожидал, что ForkManager() позаботится об этой проблеме. :-) В моем случае IPC может быть излишним. Мне нравится сжатый способ использования ForkManager(), так есть ли простой способ совместного использования глобальной хэш-карты между процессами с помощью ForkManager()? – galactica
@Jin: Получение данных из одного процесса в другой * является * IPC. Вот что это значит. Однако это не должно быть сложно. – hobbs
@Jin: да, используйте привязанный хеш; см. http://search.cpan.org/perldoc/BerkeleyDB для одного. – ysth