![]() |
ХЕЛП!!! Thread creation error : not enough storage
Thread creation error : not enough storage
После 10-20 мин работы проги выдает такую ошибку. 50 потоков работает. Нагруз на проц 1% На память 10 МБ Потоки каждый после работы удаляется. В чем может быть дело. Помогите плз. |
Выложи исходный код, или хотя бы часть которая отвечает за работу с потоками.
|
После создания потока ты закрываешь его хендл?
Ну и в конце каждого потока ExitThread(0) |
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; |
Наверное потоки не удаляются потому что диспетчер опказывает нарастание памяти проги в оператве. Доходя до 30Мб скачут ошибки а на 34 вырубаетсяпрога. Но потоки то дестроятся вроде норм. хз непойму :(
|
Смотри внимательно где ты освобождаешь ресурсы и правильно ли ты это делаешь.
|
Да вот смотри. Поток какбы удаляется. Но из памяти не удаляеться. Только из переменной наверное. Код я написал. В чем дело хз.
|
попробуй использовать ExitThread(0)
|
Цитата:
Пишу по памяти... Ты наследушься от класса TThread. перекрываешь метод Execute; При необходимости пишешь свой конструктор, деструктор. PHP код:
|
По моему достаточно присвоить переменной FreeOnTerminate значение True, как написал W!z@rD. Я в своих программах так делаю, - потоки освобождают память. Но я не переписываю конструктор/деконструктор, я при создании потока присваиваю его параметру FreeOnTerminate данное значение.
|
| Время: 01:37 |