Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2014, 23:02   #1
nibufep
Форумчанин
 
Регистрация: 02.08.2014
Сообщений: 476
По умолчанию Для каждого потока своя прокси

Всем доброго дня!
Не как не пойму как сделать.

Нужно из StringList для каждого потока брать следующию проксю, например вот список:

Цитата:
162.208.49.45:7808
209.170.151.142:3127
96.47.239.131:3127
64.120.44.50:23685
162.208.49.45:8089
64.31.22.143:8089
223.252.33.201:17130
74.50.126.248:8089
Запускаю я программу в 3 потока, и нужно чтобы брало прокси:

Цитата:
162.208.49.45:7808 (thread1)
209.170.151.142:3127 (thread2)
96.47.239.131:3127 (thread3)
64.120.44.50:23685 (thread1)
162.208.49.45:8089 (thread2)
64.31.22.143:8089 (thread3)
223.252.33.201:17130 (thread1)
74.50.126.248:8089 (thread2)
И так по кругу пока я не остановлю все потоки. Сейчас сделал так:

Код:
procedure th.Execute;
var
i:integer;
begin
while work do begin
CS.Enter;
try
if CurProxy=Proxys.Count then begin
CurProxy:=1;
end else begin
inc(CurProxy);
end;
finally
CS.Leave;
end;
if work then begin
http:=THTTPSendEx.create;
data:=tstringlist.Create;
if proxytype = 'http' then begin
ip:=Copy(Proxys[CurProxy],1,Pos(':',Proxys[CurProxy])-1);
port:=Copy(Proxys[CurProxy],Pos(':',Proxys[CurProxy])+1,Length(Proxys[CurProxy]));
http.ProxyHost:=ip;
http.ProxyPort:=port;
end;
if proxytype = 'socks' then begin
ip:=Copy(Proxys[CurProxy],1,Pos(':',Proxys[CurProxy])-1);
port:=Copy(Proxys[CurProxy],Pos(':',Proxys[CurProxy])+1,Length(Proxys[CurProxy]));
http.Sock.SocksIP:=ip;
http.Sock.SocksPort:=port;
end;

------
Ну он работает таким образом: Сначала все потоки берут первую проксю, отрабатывают, запускаются заново потоки и они берут вторую проксю. Что не правильно?
nibufep вне форума Ответить с цитированием
Старый 18.12.2014, 00:35   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ну так как написано так и работает.
синхронизации то нет, да и список со счетчиком должны быть общими.(либо метод что запршивает новое значение)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 18.12.2014, 09:50   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,527
По умолчанию

Цитата:
Нужно из StringList для каждого потока брать следующию проксю, например вот список:
Этим (распределением прокси по потокам) должна заниматься основная программа.
В основной есть список (StringList) и она самостоятельно (при запуске потока) "раздает" прокcи (по ОДНОМУ!!) потокам.
Либо же по просьбе потока (после извещения потока об завершении работы с выданным ему прокси) выдает ему другой (из необработанных). Список один и основная программа может и должна иметь возможность отмечать как выданные так и обработанные прокси c тем чтобы знать что ей выдавать следующему потоку который к ней обратится.
набросок
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задача на типы по Паскалю: Вывести число первого понедельника для каждого месяца для заданного года Ind Паскаль, Turbo Pascal, PascalABC.NET 3 23.12.2012 00:31
отличная работа для каждого Chernov_vova Фриланс 2 22.05.2012 12:43
Должно быть 3 потока. А диспетчер задач показывает, что потока создано 2 BEL9ILLI Общие вопросы Delphi 3 06.12.2011 20:26
Цикл для каждого листа. Richard123 Microsoft Office Excel 3 24.01.2011 16:11
Многопоточность. Ведение логов из каждого потока. Проблемы Человек_Борща Общие вопросы Delphi 3 07.01.2011 18:22