Просмотр полной версии : perl + потоки = геморой
use threads;
for(1..$thread){threads->create(\&brut);}
lol:
if($thread<10)
{threads->create(\&brut);sleep(2);goto(lol);}
sub brut {
$thread=$thread-1;
}
вот код сначала создаем потоки а потом периодически нужно проверять их колчество и если некоторые уже отработали то создавать новые -- но из подпроцесса нельзя изменить переменную находящуюся в осн цикле программы -- что делать??
правильно спроектировать.
подскажу: потоки не должнны заканчиваться. Если поток сделал часть работы, то просто пусть берет следующую часть.
Хотя это обходной путь, но он легче ;)
хм а это идея -- хотя продолжение его работы возможно только с исзменение внешней переменной -- мой скрипт берет из массива пароли на проверку --- и нужно знать какие брать пароли каждому потоку -- следовательно смещать указатель в массиве
все ненадо уже
получилось так
use threads;
use threads::shared;
my $num : shared;
тогда переменную $num мона изменять откуда угодно
а не проще сделать многопоточность на форках?
преимущества:
1) функция fork() есть всегда
2) нет гемора как с модулям тредов
3) много готовых примеров
Нет, не проще:
1) модули тоже
2) гемора намного меньше с тредами
3) аналогично
4) делать потоки через потоки - правильно
5) в тредах есть общие переменные
Нет, не проще:
1) модули тоже
не согласен: на многих хостингах специально убирают данный модуль
2) гемора намного меньше с тредами
на вкус и цвет, мне проще с форками.
3) аналогично
мне редко попадались, хз
4) делать потоки через потоки - правильно
правильно - это когда тебе удобно.
5) в тредах есть общие переменные
Эмм... а разве в форках нельзя юзать общие переменные?
не согласен: на многих хостингах специально убирают данный модуль Так хостинги не для этого созданы.
Кстати и perl обычно скомпилен бывает без поддержки fork()
Эмм... а разве в форках нельзя юзать общие переменные? Что такое fork()? Это ветвление. Переменные будут разными.
все ненадо уже
получилось так
use threads;
use threads::shared;
my $num : shared;
тогда переменную $num мона изменять откуда угодно
http://forum.antichat.ru/threadnav28020-2-10.html
последний пост + посмотри на дату
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot