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

[perl] перезапуск потоков
  #1  
Старый 08.11.2008, 17:25
Аватар для .::Gh0st::.
.::Gh0st::.
Гарант Форума
Регистрация: 22.01.2005
Сообщений: 267
Провел на форуме:
1982081

Репутация: 1067
Отправить сообщение для .::Gh0st::. с помощью ICQ
Question [perl] перезапуск потоков

написал многопоточный скрипт, иногда бывают ситуации что потоки вылетают, написал кодес перезапуска потоков если количество меньше первоначально-заданного, но он не срабатывает, в чем может быть дело?

Код:
# проверяем вдруг какие-то потоки сдохли
$thr_cnt = threads->list();
share($thr_cnt);
if ($thr_cnt < $threads)
{
	$cnt = $threads - $thr_cnt;
	threads->new(\&start) for (1..$cnt);
	&log("[+] NEW THREAD ADDED BECAUSE OLD ONE IS GAY-THREAD\n");
}

Последний раз редактировалось .::Gh0st::.; 08.11.2008 в 17:53..
 
Ответить с цитированием

  #2  
Старый 08.11.2008, 21:56
Аватар для Digimortal
Digimortal
Banned
Регистрация: 22.08.2006
Сообщений: 608
Провел на форуме:
6144796

Репутация: 1095


По умолчанию

Покажи весь код, где происходит работа с потоками - по этому кусочку трудно сказать, в чем проблема.
 
Ответить с цитированием

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

Репутация: 2290


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

Цитата:
иногда бывают ситуации что потоки вылетают
И вместо того, чтобы исправить ошибку, ты начинаешь строить костыли. чтобы обойти часть последствий?

Цитата:
ыыыыыыыыыыыыыы хуясебе)))
+1
 
Ответить с цитированием

  #4  
Старый 08.11.2008, 23:17
Аватар для Kaimi
Kaimi
Reservists Of Antichat - Level 6
Регистрация: 23.08.2007
Сообщений: 1,237
Провел на форуме:
18127311

Репутация: 1676


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

Цитата:
И вместо того, чтобы исправить ошибку, ты начинаешь строить костыли. чтобы обойти часть последствий?
Есть ошибки которые толком не исправить, например если используются потоки и компонент http::cookies
 
Ответить с цитированием

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

Репутация: 2290


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

Исключения?
 
Ответить с цитированием

  #6  
Старый 09.11.2008, 14:57
Аватар для .::Gh0st::.
.::Gh0st::.
Гарант Форума
Регистрация: 22.01.2005
Сообщений: 267
Провел на форуме:
1982081

Репутация: 1067
Отправить сообщение для .::Gh0st::. с помощью ICQ
По умолчанию

nerezus
по началу у меня была проблема - forum.antichat.ru/showthread.php?p=911014
я советовался с некоторыми кодерами на perl, сказали что ошибка довольно распространенная и хз что с ней делать, ее удалось решить благодаря совету Kaimi

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

нужен будет для таких вот ситуаций:
Код:
Free to wrong pool 6cde3408 not 83770a0
эта ошибка ссылалась на
Код:
opendir DIR, $dir;
- я проблему исправил, но эта ошибка (насколько я понял из-за большой нагрузки на память) иногда возникает в случайных местах и может вырубить поток.

это было по пододу построения костылей, тем не менее, я в топике указал конкретную проблему - перезапуск потоков. как бы это нелогично ни казалось для вас таких умных ребят nerezus и balt - у меня конкретная цель, я не советов о том что баги править от вас жду. если есть чем помочь - буду очень признателен, если нет - то ваши посты оффтоп. просьба не разводить его.

Последний раз редактировалось .::Gh0st::.; 09.11.2008 в 15:06..
 
Ответить с цитированием

  #7  
Старый 09.11.2008, 15:04
Аватар для .::Gh0st::.
.::Gh0st::.
Гарант Форума
Регистрация: 22.01.2005
Сообщений: 267
Провел на форуме:
1982081

Репутация: 1067
Отправить сообщение для .::Gh0st::. с помощью ICQ
По умолчанию

Digimortal
Код:
my $threads = 20;

threads->new(\&start) for (1..$threads);
$_->join for threads->list;

sub start
{
	my $tid = threads->tid();
	print "[+] $tid THREAD STARTED\n";

	my $thr = threads->object($tid);
	if ($thr->is_joinable())
	{
		print "[+] joining $tid thread\n";
		$thr->join();
	}
	else {print "$tid thread already joined\n";}
	sleep 15;

	while (1)
	{

	# проверяем вдруг какие-то потоки сдохли
	$thr_cnt = threads->list();
	share($thr_cnt);
	#print "[+] $thr_cnt for $tid THREAD\n";
	if ($thr_cnt < $threads)
	{
		$cnt = $threads - $thr_cnt;
		threads->new(\&reg) for (1..$cnt);
		print "[+] NEW THREAD ADDED BECAUSE OLD ONE IS GAY-THREAD\n";
	}
	# working part
	}
}
 
Ответить с цитированием

  #8  
Старый 09.11.2008, 22:18
Аватар для Digimortal
Digimortal
Banned
Регистрация: 22.08.2006
Сообщений: 608
Провел на форуме:
6144796

Репутация: 1095


По умолчанию

Тут ошибка уже в том, что ты джойнишь объект потока внутри его же поточной функции. Вообще здесь без джойна потоков можно обойтись - просто контролировать число созданных потоков из основного потока в цикле, а в самой поточной функции делать декремент переменной $threads перед самым завершением ее работы. Но и этим путем идти не советую, гораздо лучше, проще и правильнее, как уже написал nerezus, использовать механизм обработки исключений.

Последний раз редактировалось Digimortal; 11.11.2008 в 00:13..
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Спамер MirTesen [Perl] Kaimi Разное - Покупка, продажа, обмен 5 03.08.2008 19:35
[PERL] Basic auth Sharky PHP, PERL, MySQL, JavaScript 3 13.07.2008 01:24
[Perl] Небольшой доркер biophreak PHP, PERL, MySQL, JavaScript 2 08.07.2008 13:47
Pochta.ru Multithreads Brutforce [perl] ZAMUT E-Mail 12 14.06.2008 00:19
FTP & PR cheker [perl] ZAMUT PHP, PERL, MySQL, JavaScript 2 16.05.2008 21:57



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


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




ANTICHAT.XYZ