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

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

Репутация: 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
С нами: 9227388

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

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

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

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

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

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

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

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

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

Репутация: 395


По умолчанию

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

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

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

Репутация: 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
С нами: 9227388

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

Во-первых, нужно создавать объект 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 ™ © 2001- Antichat Kft.