ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

perl + потоки = геморой
  #1  
Старый 15.01.2007, 23:07
Аватар для genom--
genom--
Постоянный
Регистрация: 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;
}



вот код сначала создаем потоки а потом периодически нужно проверять их колчество и если некоторые уже отработали то создавать новые -- но из подпроцесса нельзя изменить переменную находящуюся в осн цикле программы -- что делать??
 
Ответить с цитированием

  #2  
Старый 15.01.2007, 23:39
Аватар для nerezus
nerezus
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме:
6490435

Репутация: 2290


Отправить сообщение для nerezus с помощью ICQ
По умолчанию

правильно спроектировать.

подскажу: потоки не должнны заканчиваться. Если поток сделал часть работы, то просто пусть берет следующую часть.
Хотя это обходной путь, но он легче
 
Ответить с цитированием

  #3  
Старый 15.01.2007, 23:42
Аватар для genom--
genom--
Постоянный
Регистрация: 09.07.2006
Сообщений: 937
Провел на форуме:
1948091

Репутация: 1686


По умолчанию

хм а это идея -- хотя продолжение его работы возможно только с исзменение внешней переменной -- мой скрипт берет из массива пароли на проверку --- и нужно знать какие брать пароли каждому потоку -- следовательно смещать указатель в массиве
 
Ответить с цитированием

  #4  
Старый 16.01.2007, 00:09
Аватар для genom--
genom--
Постоянный
Регистрация: 09.07.2006
Сообщений: 937
Провел на форуме:
1948091

Репутация: 1686


По умолчанию

все ненадо уже

получилось так

use threads;
use threads::shared;
my $num : shared;

тогда переменную $num мона изменять откуда угодно
 
Ответить с цитированием

  #5  
Старый 18.01.2007, 15:03
Аватар для VeX
VeX
Новичок
Регистрация: 05.01.2007
Сообщений: 6
Провел на форуме:
13832

Репутация: 0
По умолчанию

а не проще сделать многопоточность на форках?
преимущества:
1) функция fork() есть всегда
2) нет гемора как с модулям тредов
3) много готовых примеров
 
Ответить с цитированием

  #6  
Старый 18.01.2007, 15:08
Аватар для nerezus
nerezus
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме:
6490435

Репутация: 2290


Отправить сообщение для nerezus с помощью ICQ
По умолчанию

Нет, не проще:
1) модули тоже
2) гемора намного меньше с тредами
3) аналогично

4) делать потоки через потоки - правильно
5) в тредах есть общие переменные
 
Ответить с цитированием

  #7  
Старый 18.01.2007, 15:56
Аватар для VeX
VeX
Новичок
Регистрация: 05.01.2007
Сообщений: 6
Провел на форуме:
13832

Репутация: 0
По умолчанию

Цитата:
Сообщение от nerezus  
Нет, не проще:
1) модули тоже
не согласен: на многих хостингах специально убирают данный модуль

Цитата:
Сообщение от nerezus  
2) гемора намного меньше с тредами
на вкус и цвет, мне проще с форками.

Цитата:
Сообщение от nerezus  
3) аналогично
мне редко попадались, хз

Цитата:
Сообщение от nerezus  
4) делать потоки через потоки - правильно
правильно - это когда тебе удобно.

Цитата:
Сообщение от nerezus  
5) в тредах есть общие переменные
Эмм... а разве в форках нельзя юзать общие переменные?
 
Ответить с цитированием

  #8  
Старый 18.01.2007, 16:47
Аватар для nerezus
nerezus
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме:
6490435

Репутация: 2290


Отправить сообщение для nerezus с помощью ICQ
По умолчанию

Цитата:
не согласен: на многих хостингах специально убирают данный модуль
Так хостинги не для этого созданы.
Кстати и perl обычно скомпилен бывает без поддержки fork()

Цитата:
Эмм... а разве в форках нельзя юзать общие переменные?
Что такое fork()? Это ветвление. Переменные будут разными.
 
Ответить с цитированием

  #9  
Старый 18.01.2007, 17:52
Аватар для KSURi
KSURi
Постоянный
Регистрация: 06.06.2006
Сообщений: 515
Провел на форуме:
1985206

Репутация: 963


По умолчанию

Цитата:
Сообщение от genom--  
все ненадо уже

получилось так

use threads;
use threads::shared;
my $num : shared;

тогда переменную $num мона изменять откуда угодно
http://forum.antichat.ru/threadnav28020-2-10.html
последний пост + посмотри на дату
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Опасность ошибок Perl недооценивалась? 1251soldier Мировые новости 0 01.12.2005 20:56
Books Perl FRAGNATIC PHP, PERL, MySQL, JavaScript 0 11.08.2005 16:58
Безопасность приложений на Perl k00p3r Чужие Статьи 0 12.06.2005 09:39



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ