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) в тредах есть общие переменные
не согласен: на многих хостингах специально убирают данный модуль на вкус и цвет, мне проще с форками. мне редко попадались, хз правильно - это когда тебе удобно. Эмм... а разве в форках нельзя юзать общие переменные?
Так хостинги не для этого созданы. Кстати и perl обычно скомпилен бывает без поддержки fork() Что такое fork()? Это ветвление. Переменные будут разными.