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

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

Репутация: 59
По умолчанию ХЕЛП!!! 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
С нами: 9162683

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

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

  #3  
Старый 05.08.2009, 22:41
slesh
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
С нами: 10097606

Репутация: 3349


По умолчанию

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

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

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

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
С нами: 8912555

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

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

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

Репутация: 414


По умолчанию

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

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

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

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

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

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

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

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

Репутация: 836


По умолчанию

Цитата:
Сообщение от 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
С нами: 9162683

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

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



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



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


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




ANTICHAT ™ © 2001- Antichat Kft.