HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > PHP
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

perl + потоки = геморой
  #1  
Старый 15.01.2007, 23:07
genom--
Постоянный
Регистрация: 09.07.2006
Сообщений: 937
С нами: 10441826

Репутация: 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
Флудер
Регистрация: 12.08.2004
Сообщений: 3,791
С нами: 11444066

Репутация: 2290


По умолчанию

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

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

  #3  
Старый 15.01.2007, 23:42
genom--
Постоянный
Регистрация: 09.07.2006
Сообщений: 937
С нами: 10441826

Репутация: 1686


По умолчанию

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

  #4  
Старый 16.01.2007, 00:09
genom--
Постоянный
Регистрация: 09.07.2006
Сообщений: 937
С нами: 10441826

Репутация: 1686


По умолчанию

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

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

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

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

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

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

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

  #6  
Старый 18.01.2007, 15:08
nerezus
Флудер
Регистрация: 12.08.2004
Сообщений: 3,791
С нами: 11444066

Репутация: 2290


По умолчанию

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

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

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

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

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

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

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

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

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

  #8  
Старый 18.01.2007, 16:47
nerezus
Флудер
Регистрация: 12.08.2004
Сообщений: 3,791
С нами: 11444066

Репутация: 2290


По умолчанию

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

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

  #9  
Старый 18.01.2007, 17:52
KSURi
Постоянный
Регистрация: 06.06.2006
Сообщений: 515
С нами: 10489346

Репутация: 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 0 11.08.2005 16:58



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


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




ANTICHAT ™ © 2001- Antichat Kft.