Вы, безусловно, можете сделать это в Perl, я предлагаю вам взглянуть на perldoc threads
и perldoc threads::shared
, поскольку эти справочные страницы лучше всего описывают методы и подводные камни, возникающие при использовании потоков в Perl.
Что бы я хотелна самом деле предлагаю вам использовать, при условии, что вы можете, вместо этого - систему управления очередью, такую как Gearman , которая имеет различные интерфейсы, включая модуль Perl.Это позволяет вам создать столько «рабочих», сколько вы хотите (подпрограммы фактически выполняют работу) и создать одного простого «клиента», который бы планировал соответствующие задачи и затем сопоставлял результаты, не прибегая к использованию трюков, как при использовании конкретных ключей хеш-реферак задаче или тому подобному.
Этот подход также лучше масштабируется, и вы сможете иметь клиентов и работников (даже менеджеров) на разных машинах, если вы выберете это.
Другие системы очередей, такие как TheSchwartz, не будут указаны, так как им не хватает обратной связи / результата, который обеспечивает Gearman.В любом случае, использование Gearman таким образом во многом похоже на описанную вами многопоточную систему, без лишних хлопот и головной боли, от которой может в конечном итоге пострадать любая система, основанная на потоках: блокировка переменных, использование семафоров, присоединение к потокам.