У нас возникли проблемы при создании Thread :: Pool на последних версиях Ubuntu, поэтому мы переписали код для использования Thread :: Pool :: Simple, поскольку этот модуль Perl поставляется в комплекте с дистрибутивом.1002 * Однако мы обнаружили, что независимо от того, сколько потоков мы запускаем в пуле, он больше не справляется с загрузкой сообщений.На самом деле, он работает примерно в 10 раз медленнее, чем раньше.
Я быстро прочитал код Thread :: Pool :: Simple, и одна вещь выскочила на меня: он делает много вызовов yield()
что в системах Linux 2.6 / 3.0 - ужасная, ужасная идея.
То, что делает наш маленький скрипт, - это чтение сообщений из очереди сообщений ActiveMQ и обработка их в нашей системе баз данных.С Thread :: Pool это легко поддерживалось, делая 8 соединений с БД и записывая параллельно.с Thread :: Pool :: Simple сначала это работало, но длина очереди просто увеличивалась, потому что она не могла справиться.
Кто-нибудь еще имеет опыт работы с этими двумя версиями потоков Perl?Я делаю очевидную ошибку с использованием Thread :: Pool :: Simple?