 |
Еще раз о Многопоточности |

10.06.2010, 22:27
|
|
Новичок
Регистрация: 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 снова запустить
|
|
|

10.06.2010, 22:42
|
|
Постоянный
Регистрация: 29.10.2008
Сообщений: 306
С нами:
9227388
Репутация:
180
|
|
Сообщение от akimov_aleks
как первому потоку дать id=1 итд
и второй вопрос как проверять если поток остоновился tuk снова запустить
1) почитай про синхронизацию потоков
2) зачем его запускать, если он остановился? сделай так, чтобы он не останавливался, пока это не будет нужно.
|
|
|

10.06.2010, 23:27
|
|
Новичок
Регистрация: 03.05.2009
Сообщений: 22
С нами:
8959525
Репутация:
0
|
|
Сообщение от M_script_
1) почитай про синхронизацию потоков
2) зачем его запускать, если он остановился? сделай так, чтобы он не останавливался, пока это не будет нужно.
читал написано очень запутоно... зачем пишут книжки в 100 страниц когда нужна всего лишь 1 страничка.
если есть укого нибуть примерчик как сделть поделитесь
|
|
|

11.06.2010, 00:10
|
|
Постоянный
Регистрация: 29.10.2008
Сообщений: 306
С нами:
9227388
Репутация:
180
|
|
Сообщение от akimov_aleks
читал написано очень запутоно... зачем пишут книжки в 100 страниц когда нужна всего лишь 1 страничка.
если есть укого нибуть примерчик как сделть поделитесь
Если 100 страниц читать лень про различные методы синхронизации, прочитай только о критических секциях, тебе хватит.
Если делфи или билдер, можешь использовать класс TThread с его Synchronize
|
|
|

11.06.2010, 00:13
|
|
Постоянный
Регистрация: 20.03.2009
Сообщений: 564
С нами:
9023100
Репутация:
395
|
|
рихтера почитай... хотя...
вообще при создании потока функции потока можно передать указатель переменную например в твоем случае целое число.
2 нафига его перезапускать сделай бесконечный цикл
а нужность не нужность зафигачь через event-ы
если не хочешь заморачиваться сделай массив числовой типа fEnable[10];
и в функции протока проверяй в цикле бесконечном if(fEnable[id]==0) break;
|
|
|

11.06.2010, 00:23
|
|
Новичок
Регистрация: 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;
что то вроде так...
и как его синхронизоватьь....
|
|
|

11.06.2010, 00:30
|
|
Постоянный
Регистрация: 29.10.2008
Сообщений: 306
С нами:
9227388
Репутация:
180
|
|
Во-первых, нужно создавать объект TIdHTTP в потоке, а не кидать на форму, иначе смысла в многопоточности нет.
Во-вторых - гугл.ком -> "делфи Synchronize"
|
|
|
|
 |
Предыдущая тема
Следующая тема
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|