LINUX.ORG.RU
Ответ на: комментарий от Olegymous

Кроме ping необходимо ещё пускать самописную утилиту, тоже параллельно.

Вы вероятно как-то так хотите её запускать: $response = `ping -c 5 host`. И так в каждом потоке. Это неправильный вариант.

А можно узнать, почему? Разве команды не запускаются параллельно в таком случае?

perldoc -f open. Ф-ция open умеет запускать указанную внешнюю программу и устанавливать канал между запущенной программой и вашим процессом. Таким образом вест STDOUT запущенной программы будет доступен через дескриптор файла. Итого: открываем сколько нужно утилит ping и в цикле используя select() чтобы определить дескрипторы доступные для чтения получаем ответы.

Спасибо, я постараюсь разобраться.

Chaser_Andrey ★★★★★
() автор топика
Ответ на: комментарий от Chaser_Andrey

Разве команды не запускаются параллельно в таком случае?

Запускаются параллельно. Но если можно обойтись без потоков, то нужно обходиться без потоков. Потоки в perl достаточно толстые. Почитайте вот: things you need to know before programming Perl ithreads.

Olegymous ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.