Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |

15.01.2007, 23:07
|
|
Постоянный
Регистрация: 09.07.2006
Сообщений: 937
Провел на форуме: 1948091
Репутация:
1686
|
|
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;
}
вот код сначала создаем потоки а потом периодически нужно проверять их колчество и если некоторые уже отработали то создавать новые -- но из подпроцесса нельзя изменить переменную находящуюся в осн цикле программы -- что делать??
|
|
|

15.01.2007, 23:39
|
|
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме: 6490435
Репутация:
2290
|
|
правильно спроектировать.
подскажу: потоки не должнны заканчиваться. Если поток сделал часть работы, то просто пусть берет следующую часть.
Хотя это обходной путь, но он легче 
|
|
|

15.01.2007, 23:42
|
|
Постоянный
Регистрация: 09.07.2006
Сообщений: 937
Провел на форуме: 1948091
Репутация:
1686
|
|
хм а это идея -- хотя продолжение его работы возможно только с исзменение внешней переменной -- мой скрипт берет из массива пароли на проверку --- и нужно знать какие брать пароли каждому потоку -- следовательно смещать указатель в массиве
|
|
|

16.01.2007, 00:09
|
|
Постоянный
Регистрация: 09.07.2006
Сообщений: 937
Провел на форуме: 1948091
Репутация:
1686
|
|
все ненадо уже
получилось так
use threads;
use threads::shared;
my $num : shared;
тогда переменную $num мона изменять откуда угодно
|
|
|

18.01.2007, 15:03
|
|
Новичок
Регистрация: 05.01.2007
Сообщений: 6
Провел на форуме: 13832
Репутация:
0
|
|
а не проще сделать многопоточность на форках?
преимущества:
1) функция fork() есть всегда
2) нет гемора как с модулям тредов
3) много готовых примеров
|
|
|

18.01.2007, 15:08
|
|
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме: 6490435
Репутация:
2290
|
|
Нет, не проще:
1) модули тоже
2) гемора намного меньше с тредами
3) аналогично
4) делать потоки через потоки - правильно
5) в тредах есть общие переменные
|
|
|

18.01.2007, 15:56
|
|
Новичок
Регистрация: 05.01.2007
Сообщений: 6
Провел на форуме: 13832
Репутация:
0
|
|
Сообщение от nerezus
Нет, не проще:
1) модули тоже
не согласен: на многих хостингах специально убирают данный модуль
Сообщение от nerezus
2) гемора намного меньше с тредами
на вкус и цвет, мне проще с форками.
Сообщение от nerezus
3) аналогично
мне редко попадались, хз
Сообщение от nerezus
4) делать потоки через потоки - правильно
правильно - это когда тебе удобно.
Сообщение от nerezus
5) в тредах есть общие переменные
Эмм... а разве в форках нельзя юзать общие переменные?
|
|
|

18.01.2007, 16:47
|
|
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме: 6490435
Репутация:
2290
|
|
не согласен: на многих хостингах специально убирают данный модуль
Так хостинги не для этого созданы.
Кстати и perl обычно скомпилен бывает без поддержки fork()
Эмм... а разве в форках нельзя юзать общие переменные?
Что такое fork()? Это ветвление. Переменные будут разными.
|
|
|

18.01.2007, 17:52
|
|
Постоянный
Регистрация: 06.06.2006
Сообщений: 515
Провел на форуме: 1985206
Репутация:
963
|
|
Сообщение от genom--
все ненадо уже
получилось так
use threads;
use threads::shared;
my $num : shared;
тогда переменную $num мона изменять откуда угодно
http://forum.antichat.ru/threadnav28020-2-10.html
последний пост + посмотри на дату
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|