Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.23;
Скачать: CL | DM;

Вниз

Thread creation error   Найти похожие ветки 

 
csr ©   (2004-04-28 16:10) [0]

Что означает этот эррор и как его лечить?

Thread creation error: Not enough storage is available to process this command


 
Digitman ©   (2004-04-28 16:12) [1]

ты поди влупил параметром в CreateThread бешеный размер требуемого потоку стека ?


 
Тимохов ©   (2004-04-28 16:13) [2]

или это уже стотысячный по счету поток


 
panov ©   (2004-04-28 16:35) [3]

>Тимохов ©   (28.04.04 16:13) [2]

Это уже миллионный поток для рассылки спамерских писем.

-----------------
SPAMERS MUST DIE.


 
Матлабист   (2004-04-28 16:35) [4]

> Что означает этот эррор и как его лечить?
Код приведи что-ль...


 
csr ©   (2004-04-28 17:29) [5]

Я использую класс TThread, по этому чвно не указываю размер стека... И в кол-ве потоков тут не проблема, т.к. подобные штуки и на большем кол-ве потоков работали... А тут... буквально 1500 потоков всего и такая вот ерунда получается... Не может поток даже стартануть. А если ставим скажем 1000 потоков, то пашет все ок... Может можно как-нить разобраться в чем дело?

2 Матлабист : Ты хочешь чтоб я тут привел код модуля потока?? ))


 
Тимохов ©   (2004-04-28 17:31) [6]

а на фига столько?
1) спам
2) жизнь моделируете


 
csr ©   (2004-04-28 17:46) [7]

2 Тимохов:
А какая разница? Мне поставили задачу - я пишу прогу, выполняю, то что мне сказали - мое дело малое... Сказали так сделать, вот и делааю...

Вы мне лучше подскажите конкретно по сабжу, пожалйста.


 
Игорь Шевченко ©   (2004-04-28 17:50) [8]


> А тут... буквально 1500 потоков всего и такая вот ерунда
> получается


Дурацкое решение. Все процессорное время будет тратиться на переключение контекстов.


 
Smithson ©   (2004-04-28 17:51) [9]

Конкретно по сабжу, на выбор:
1. Уменьшить число потоков
2. Уменьшить потребности каждого экземпляра потока в ресурсах (стек, память в куче, объекты системы)
3. Привести код (с комментариями), тогда возможно будет его проанализировать (если найдутся желающие) и подсказать пути оптимизации или решения этой же задачи другими средствами.
4. Ну или сидеть и думать самому.

Выбирай.


 
csr ©   (2004-04-28 17:52) [10]

2 Игорь Шевченко
более умное решение можешь предложить? Проц атлон 3000 загружает на 30% максимум! Тут не в этом вопрос! Все написано ОК, но почему-то ошибка вылетает! Кто знает как пофиксить это??


 
csr ©   (2004-04-28 17:55) [11]

2 Smithson ©

Вариант №2: Подскажи, как используя класс TThread Уменьшить потребности каждого экземпляра потока в ресурсах (стек, память в куче, объекты системы) ?


 
Smithson ©   (2004-04-28 17:58) [12]

Это класс довольно экономно расходует реcурсы. Но ты-то используешь не TThread, а его потомка, про таланты и аппетиты которого нам по-прежнему ничего не известно.


 
csr ©   (2004-04-28 18:01) [13]

2 Smithson ©

А уменьшить кол-во потоков - низя... Мне б наоборот достичь того чтоб увеличить их мона было ;)

И вот еще что: если в пределах одного процесса стартануть еще 1000 потоков (но уже другого назначения), то тож такой баг... А если несколько копий проги запустить, то все на 1000 потоках валят как надо )) Только правда проц умирает почти полностью...


 
csr ©   (2004-04-28 18:04) [14]

2 Smithson ©
Дак создается он по дефолту - никаких значений размера стека и прочего я не менял...

Как это можнго сделать?


 
Игорь Шевченко ©   (2004-04-28 18:06) [15]


> Мне б наоборот достичь того чтоб увеличить их мона было
> ;)


Можно вопрос ? Что за задача такая ?


 
Тимохов ©   (2004-04-28 18:07) [16]


> Игорь Шевченко ©   (28.04.04 18:06) [15]

вам же сказал - какая вам разница


 
Smithson ©   (2004-04-28 18:12) [17]

Да, я видимо не точно сформулировал свои пункты. По 1, 2 и 4 пункту возможно только самостоятельная работа. И только 3 пункт может стать основой для продолжения обсуждения.
:)
Удачи!


 
csr ©   (2004-04-28 18:36) [18]

2 Smithson ©

Дак ты не знаешь как менять размер стека у потомков класса TThread ?


 
Тимохов ©   (2004-04-28 18:44) [19]

в потомке tthread перекрыть конструктор (см. tthread.create)
в BeginThread вторым парметром передавать не 0, а другое значение.

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


 
Smithson ©   (2004-04-28 18:57) [20]


constructor TThread.Create(CreateSuspended: Boolean);
var
 Flags: DWORD;
begin
 inherited Create;
 AddThread;
 FSuspended := CreateSuspended;
 Flags := 0;
 if CreateSuspended then Flags := CREATE_SUSPENDED;
 FHandle := BeginThread(nil, 0, @ThreadProc, Pointer(Self), Flags, FThreadID);
end;


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


 
Тимохов ©   (2004-04-28 18:59) [21]


> 0 - означает, что система сама оперирует стеком и выделяет
> столько, сколько нужно

нет
размер берется из основной программы.


 
Тимохов ©   (2004-04-28 19:00) [22]

чтобы быть корректным в терминах поправлю себя - из главного потока, а не из основной программы.


 
panov ©   (2004-04-28 19:02) [23]

>Игорь Шевченко ©   (28.04.04 18:06) [15]

Дык вот ответ - http://www.caesar-soft.biz/


 
Smithson ©   (2004-04-28 19:03) [24]

Ос, не знал. Считал, что система сама распределяет по страничке...
Спасибо.


 
Игорь Шевченко ©   (2004-04-28 19:09) [25]

[23] panov ©   (28.04.04 19:02)

SPAMERS MUST DIE!!!

И как у людей совести хватает...


 
csr ©   (2004-04-28 21:16) [26]

2 panov ©  

Ну что ты сайт-то светишь? Я щас не работаю там. Чего ты тут шорох наводишь? Не можешь ответить - вот и не отвечай.

Спасибо господа, я попробую с размером стека... Позже сообщу что получилось...


 
Игорь Шевченко ©   (2004-04-28 22:33) [27]

csr ©   (28.04.04 21:16)


> Ну что ты сайт-то светишь?


Так ты его сам в анкете светишь. Нафиг спамеров, давить их, как тараканов. Тем более, многопоточных.


 
Юрий Зотов ©   (2004-04-28 23:44) [28]

Многопоточный таракан?
М-м-м... оригинально...

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


 
Digitman ©   (2004-04-29 08:32) [29]

хуже спамера только спамер-дилетант с инициативой)
безо всяких доп.потоков вполне можно обойтись для решения той же гнилой задачи)


 
Smithson ©   (2004-04-29 10:46) [30]

Тимохов ©   (28.04.04 19:00) [22]
Для общего развития можно уточнения? Из главного (первого) потока прорцесса или из вызывающего потока? Ведь BeginThread может дернуть и вторичный поток...


 
Тимохов ©   (2004-04-29 11:25) [31]


> Smithson ©   (29.04.04 10:46) [30]

В доке написано, что если передавать 0, то будет браться размер стека главного потока.

Сами посмотрите createthread+f1.

Всем.
Вот блин - в анкету забыл посмотреть и совет дал, хорошо бы чтобы не правильный :(((


 
Smithson ©   (2004-04-29 11:28) [32]

Спасибо, пошел в MSDN. Не люблю я его...


 
Тимохов ©   (2004-04-29 11:30) [33]


> Smithson ©   (29.04.04 11:28) [32]

Можно в дельфи почитать
вот

dwStackSize

Specifies the size, in bytes, of the stack for the new thread. If 0 is specified, the stack size defaults to the same size as that of the primary thread of the process.


 
csr ©   (2004-04-29 12:26) [34]

Спасибо за понимание господа)) А неподскажите-ли также любезно, от чего может происходить ошибка Thread creation error: Not enough storage is available to process this command?


 
Игорь Шевченко ©   (2004-04-29 12:35) [35]

csr ©   (29.04.04 12:26)

Не подскажем.

Spamers must die.


 
Григорьев Антон   (2004-04-29 12:39) [36]


> csr ©   (29.04.04 12:26) [34]
> Спасибо за понимание господа))


Какое, к чёрту, понимание? Нормальный человек никогда не поймёт тех [вырезано цензурой], которые зарабатывают деньги тем, что портят жизнь другим людям.


 
Юрий Зотов ©   (2004-04-29 12:55) [37]

> csr ©   (29.04.04 12:26) [34]

> от чего может происходить ошибка Thread creation error: Not
> enough storage is available to process this command?

Я думаю, Вам стоит написать письмо с этим вопросом в известный Центр американского английского. Нет сомнений, что тамошние специалисты смогут совершенно точно перевести эту фразу и дать квалифицированный ответ. Причем неоднократно. Чтобы лучше дошло.


 
Digitman ©   (2004-04-29 13:06) [38]


> csr ©   (29.04.04 12:26) [34]
> от чего может происходить ошибка Thread creation error:
> Not enough storage is available to process this command?


в при всем неприятии тебя как LMD и SMD тебе теме не менее уже разжевали - ты как минимум стеками своих потоков "сожрал" ВСЕ доступное ВАП процесса)).. не говоря уже о прикладной "спаммерской" логики самих потоков))

p.s.
"Боня, ты тупой !" (с) КВН


 
Тимохов ©   (2004-04-29 13:25) [39]


> "Боня, ты тупой !" (с) КВН

а куда же им деваться, только в спамеры подаваться.

"От Ивана.
Супир нодддежжные маас совые росссылке 10000000000 адрисссов всиго за 100 уё"


 
csr ©   (2004-04-30 14:35) [40]

Удалено модератором
Примечание: Offtopic



Страницы: 1 2 вся ветка

Текущий архив: 2004.05.23;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.028 c
1-1084364369
V l a d i m i r
2004-05-12 16:19
2004.05.23
Про OleContainer


3-1082698935
denmin
2004-04-23 09:42
2004.05.23
Как ускорить процесс открытия таблицы MS SQL Server2000?


1-1084206117
Nicolas1985
2004-05-10 20:21
2004.05.23
Разрешение экрана


11-1071537684
XsID
2003-12-16 04:21
2004.05.23
ShowModal


1-1084361305
lehich
2004-05-12 15:28
2004.05.23
цикл DateTime