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

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

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

Еще раз о Многопоточности
  #1  
Старый 10.06.2010, 22:27
akimov_aleks
Новичок
Регистрация: 03.05.2009
Сообщений: 22
Провел на форуме:
38103

Репутация: 0
По умолчанию Еще раз о Многопоточности

Перечетал кучу инфы по Многопоточности.
возникли вопросы. подскажите если не затруднит.
допустим мне надо сделать GEt запрос тапа
Код:
IdHTTP1.Get('http://'+Form1.Edit1.Text+'/index.php?id=1');
IdHTTP1.Get('http://'+Form1.Edit1.Text+'/index.php?id=2');
IdHTTP1.Get('http://'+Form1.Edit1.Text+'/index.php?id=n');
с одним потоком я разабрался как это сделать. а вот как в 10 не могу понять
как первому потоку дать id=1 итд
и второй вопрос как проверять если поток остоновился tuk снова запустить
 
Ответить с цитированием

  #2  
Старый 10.06.2010, 22:42
M_script_
Постоянный
Регистрация: 29.10.2008
Сообщений: 306
Провел на форуме:
1819761

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

Цитата:
Сообщение от akimov_aleks  
как первому потоку дать id=1 итд
и второй вопрос как проверять если поток остоновился tuk снова запустить
1) почитай про синхронизацию потоков
2) зачем его запускать, если он остановился? сделай так, чтобы он не останавливался, пока это не будет нужно.
 
Ответить с цитированием

  #3  
Старый 10.06.2010, 23:27
akimov_aleks
Новичок
Регистрация: 03.05.2009
Сообщений: 22
Провел на форуме:
38103

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

Цитата:
Сообщение от M_script_  
1) почитай про синхронизацию потоков
2) зачем его запускать, если он остановился? сделай так, чтобы он не останавливался, пока это не будет нужно.
читал написано очень запутоно... зачем пишут книжки в 100 страниц когда нужна всего лишь 1 страничка.
если есть укого нибуть примерчик как сделть поделитесь
 
Ответить с цитированием

  #4  
Старый 11.06.2010, 00:10
M_script_
Постоянный
Регистрация: 29.10.2008
Сообщений: 306
Провел на форуме:
1819761

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

Цитата:
Сообщение от akimov_aleks  
читал написано очень запутоно... зачем пишут книжки в 100 страниц когда нужна всего лишь 1 страничка.
если есть укого нибуть примерчик как сделть поделитесь
Если 100 страниц читать лень про различные методы синхронизации, прочитай только о критических секциях, тебе хватит.
Если делфи или билдер, можешь использовать класс TThread с его Synchronize
 
Ответить с цитированием

  #5  
Старый 11.06.2010, 00:13
Gar|k
Постоянный
Регистрация: 20.03.2009
Сообщений: 564
Провел на форуме:
991929

Репутация: 395


По умолчанию

рихтера почитай... хотя...
вообще при создании потока функции потока можно передать указатель переменную например в твоем случае целое число.

2 нафига его перезапускать сделай бесконечный цикл
а нужность не нужность зафигачь через event-ы
если не хочешь заморачиваться сделай массив числовой типа fEnable[10];
и в функции протока проверяй в цикле бесконечном if(fEnable[id]==0) break;
 
Ответить с цитированием

  #6  
Старый 11.06.2010, 00:23
akimov_aleks
Новичок
Регистрация: 03.05.2009
Сообщений: 22
Провел на форуме:
38103

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

Цитата:
Сообщение от M_script_  
Если 100 страниц читать лень про различные методы синхронизации, прочитай только о критических секциях, тебе хватит.
Если делфи или билдер, можешь использовать класс TThread с его Synchronize
может поможешь разобраться

начнем
Код:
TNewThread = class(TThread)    private    protected      procedure Execute; override;    public      constructor Create(CreateSuspended: Boolean);  end;
Код:
constructor TNewThread.Create(CreateSuspended: Boolean);  begin    inherited Create(CreateSuspended);  end;    procedure TNewThread.Execute;  
var  params, r, p, responseres : tstringlist;  i,a,b:integer;  n,s,user,user2:string;  
begin
for i:=1 to b do 
 begin
 IdHTTP1.Get('http://'+Form1.Edit1.Text+'/index.php?id='+i);
 i:=i+1;
 end;
end;
Код:
procedure TForm1.Button2Click(Sender: TObject);  begin   TNewThread.Create(false);  end;
что то вроде так...
и как его синхронизоватьь....
 
Ответить с цитированием

  #7  
Старый 11.06.2010, 00:30
M_script_
Постоянный
Регистрация: 29.10.2008
Сообщений: 306
Провел на форуме:
1819761

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

Во-первых, нужно создавать объект TIdHTTP в потоке, а не кидать на форму, иначе смысла в многопоточности нет.
Во-вторых - гугл.ком -> "делфи Synchronize"
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Еще раз о регистрации доменов Bacbko Болталка 1 18.11.2009 18:46
Star Wars: The Old Republic - новости и еще раз новости AquaKlaster Мировые новости 2 03.06.2009 02:22
еще раз спрашиваю direktor_pljazha Болталка 9 19.05.2003 10:21



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


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




ANTICHAT.XYZ