ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

ХЕЛП!!! Thread creation error : not enough storage
  #1  
Старый 05.08.2009, 21:41
narik_
Участник форума
Регистрация: 05.06.2009
Сообщений: 125
Провел на форуме:
1454012

Репутация: 59
Отправить сообщение для narik_ с помощью ICQ
По умолчанию ХЕЛП!!! Thread creation error : not enough storage

Thread creation error : not enough storage
После 10-20 мин работы проги выдает такую ошибку. 50 потоков работает.
Нагруз на проц 1%
На память 10 МБ
Потоки каждый после работы удаляется.
В чем может быть дело. Помогите плз.
 
Ответить с цитированием

  #2  
Старый 05.08.2009, 22:25
Chrome~
Постоянный
Регистрация: 13.12.2008
Сообщений: 354
Провел на форуме:
1747641

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

Выложи исходный код, или хотя бы часть которая отвечает за работу с потоками.
 
Ответить с цитированием

  #3  
Старый 05.08.2009, 22:41
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


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

После создания потока ты закрываешь его хендл?
Ну и в конце каждого потока ExitThread(0)
 
Ответить с цитированием

  #4  
Старый 06.08.2009, 00:24
narik_
Участник форума
Регистрация: 05.06.2009
Сообщений: 125
Провел на форуме:
1454012

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

procedure ge.Execute;

begin
try

Synchronize(unit1.Form1.porgr);

self.Terminate;
self.Free;
self.Destroy;
except
Synchronize(unit1.Form1.porgr);

self.Terminate;
self.Free;
self.Destroy;
end;
end;
 
Ответить с цитированием

  #5  
Старый 06.08.2009, 00:32
narik_
Участник форума
Регистрация: 05.06.2009
Сообщений: 125
Провел на форуме:
1454012

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

Наверное потоки не удаляются потому что диспетчер опказывает нарастание памяти проги в оператве. Доходя до 30Мб скачут ошибки а на 34 вырубаетсяпрога. Но потоки то дестроятся вроде норм. хз непойму
 
Ответить с цитированием

  #6  
Старый 06.08.2009, 01:25
razb
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
Провел на форуме:
2868783

Репутация: 414


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

Смотри внимательно где ты освобождаешь ресурсы и правильно ли ты это делаешь.
 
Ответить с цитированием

  #7  
Старый 06.08.2009, 01:50
narik_
Участник форума
Регистрация: 05.06.2009
Сообщений: 125
Провел на форуме:
1454012

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

Да вот смотри. Поток какбы удаляется. Но из памяти не удаляеться. Только из переменной наверное. Код я написал. В чем дело хз.
 
Ответить с цитированием

  #8  
Старый 06.08.2009, 02:00
ZdezBilYa
Участник форума
Регистрация: 29.08.2008
Сообщений: 151
Провел на форуме:
1551582

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

попробуй использовать ExitThread(0)
 
Ответить с цитированием

  #9  
Старый 06.08.2009, 07:03
W!z@rD
Reservists Of Antichat - Level 6
Регистрация: 12.02.2006
Сообщений: 891
Провел на форуме:
1892597

Репутация: 836


Отправить сообщение для W!z@rD с помощью ICQ
По умолчанию

Цитата:
Сообщение от narik_  
procedure ge.Execute;

begin
try

Synchronize(unit1.Form1.porgr);

self.Terminate;
self.Free;
self.Destroy;
except
Synchronize(unit1.Form1.porgr);

self.Terminate;
self.Free;
self.Destroy;
end;
end;
o_O
Пишу по памяти...
Ты наследушься от класса TThread.
перекрываешь метод Execute;
При необходимости пишешь свой конструктор, деструктор.

PHP код:
constructor Create(CreateSuspendedBoolean);
begin
self
.FreeOnTerminate:=true;
end;

procedure ge.Executeoverride
begin
try
SomeLogic
except
self
.Terminate;
finally
  
Synchronize(unit1.Form1.porgr);
end 
имхо... хотя мог и ошибиться, забыл уже дельфи =(
__________________
*********************************
*Я не волшебник ٩(๏̯͡๏)۶, только учусь...*
*********************************
Программы на заказ
Times to fly...
 
Ответить с цитированием

  #10  
Старый 06.08.2009, 14:23
Chrome~
Постоянный
Регистрация: 13.12.2008
Сообщений: 354
Провел на форуме:
1747641

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

По моему достаточно присвоить переменной FreeOnTerminate значение True, как написал W!z@rD. Я в своих программах так делаю, - потоки освобождают память. Но я не переписываю конструктор/деконструктор, я при создании потока присваиваю его параметру FreeOnTerminate данное значение.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удобный Http брут на Php KEZ PHP, PERL, MySQL, JavaScript 18 13.08.2005 13:34



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


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




ANTICHAT.XYZ