Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Синтаксис
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 31.12.2009, 07:51
Romix Romix вне форума
Начинающий
 
Регистрация: 10.02.2008
Сообщения: 136
Версия Delphi: XE2
Репутация: 41
Вопрос Потоки... Потоки... Очень Много Потоков...

Многопоточность... Это уже все понятно... В интернете куча примеров... Сам реализовывал такие программы... Находил что новое понимал... А вот сдесь столкнулся с реальной проблемой... И так...
Есть приложение которое должно выполнить цикл и создать ну например ~ 10000 потоков которые будут че то делать... Вот примерный пример кода:
Код:
type
  TT = class(TThread)
  private
    URLRW: String;
    PSRW: String;
    PPRW: Integer;
  protected
    procedure Execute; Override;
  public
    property URL: String read URLRW write URLRW;
    property PS: String read PSRW write PSRW;
    property PP: Integer read PPRW write PPRW;
end;

procedure TT.Execute;
begin
Sleep(99999);
end;

procedure TMainForm.Button1Click(Sender: TObject);
var
T: TT;
I: Integer;
begin
for I:=0 to 10000 do
begin
T:=TT.Create(True);
T.FreeOnTerminate:=True;
T.OnTerminate:=DoneTerminate;
T.Resume;
MainForm.Caption:=IntToStr(I);
Application.ProcessMessages;
end;
end;

В данном примере, поток создается и "СПИТ"... Создание идет до ~2000 потока хорошо а потом вылетает ошибка "Thread creation error: Недостаточно памяти для обработки команды"...
Где то слышал что под поток Windows выделяет определенное количество памяти... Так вот... Если это так... Можно ли изменить это???
Например выделить больше памяти... Или меньше...
Ну не верю я просто что 2Гб оперативной и 2Гб виртуальной памяти не хватает для 3000 потоков... Можно подсчитать... 4000Мб / 2000Потоков = 2Мб на пустой поток... Но если верить "диспетчеру задач"... То на 2010 созданных потоков, расходуется 21Мб оперативной и 51Мб виртуальной памяти... Так как же все таки изменить размеры памяти выделяемой для потока??? Или как создать например 20000 потоков??? Уверен "железо" позволяет...
Буду рад Любым Мыслям... Заранее огромное спасибо...
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:28.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter