|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
06.04.2015, 14:11 | #12 |
Форумчанин
Регистрация: 23.12.2014
Сообщений: 220
|
min@y™Хорошая книга, много полезных примеров,
Поиск файлов в потоке Потоки и базы данных Многопоточная графика и тд. Это все реализовать не так сложно по сравнению с парсингом в интернете в многопотоках =================================== ============= Но сейчас пока интересует вот это: Реально отработал вот этот у ДралсяСошибками пример типа того что мы для каждого потока создаем свой TIdHttp! А что бы создать для каждого свой полагаю лучшего способа как сварганить из потоков и объектов TIdHttp массив лучшего способа не придумать. Все работает значит по такому принципу: Создаем циклом 10 потоков Создаем циклом 10 объктов TIdHttp Загружаем в каждый TIdHttp[i] страницу сайта При чем загрузку начинаем одновременно во все TIdHttp[i]!!! Внутри этой процедуры ни каких циклов! Иначе ни какой многопоточности неощущается, там только инкримент! Код:
Много-поток приведенным здесь способом отработает очень быстро, он быстро загрузит 10 страниц без проблем. Но проблемы возникают тогда когда я хочу загрузить 100, 500 или 1000 страниц. Этот способ делать массив потоков = 1000 штук и массив IdHttp-шек уже неподходит! Все начинает зависать! А использовать одну Http[i]-шку я безопасно могу использовать только один раз, ведь я не знаю когда она освободится от загрузки страницы и ее можно применить будет снова. Если я неправильно сказал в этом месте то поправьте приведите пример кодом. Какие способы еще решения данной проблемы можно воплотить в реальность? Например 5 потоков но чтоб они работали постоянно, можно кодом пример. Последний раз редактировалось NIKOLAYY2; 06.04.2015 в 14:22. |
06.04.2015, 14:34 | #13 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Я так понимаю ты с запрос на один и тот же сайт даешь? Серверу тамошнему это может не нравиться (мне бы не понравилось), и он будет блокировать твои запросы считая что ты бот, да еще и нагло атакующий его количеством. Что я хочу сказать: 1) Не делай так много запросов сразу. Ставь в очередь. 2) Твой пример не идеален. Предлагаю замену: Код:
Код:
I'm learning to live...
|
|
06.04.2015, 15:31 | #14 | |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
Цитата:
Используй TThreadList и потомок TStream с полем TidHTTP и соотв. свойством!!! Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
|
|
06.04.2015, 20:13 | #15 | ||
Форумчанин
Регистрация: 23.12.2014
Сообщений: 220
|
Цитата:
Цитата:
Там еще опечатка у вас Synchronize(procedure я ее поправил и в конечном итоге получил такой код: Он компилируется, но при нажатии кнопки зависает все. Я наверно неверно снова сделал что-тоне так.. Код:
|
||
06.04.2015, 20:29 | #16 | |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
у тебя бесконечная рекурсия в теле треда.
Цитата:
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
|
|
06.04.2015, 20:47 | #17 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
У тебя какой версии Делфи то?
I'm learning to live...
|
|
06.04.2015, 20:56 | #18 | ||
Форумчанин
Регистрация: 23.12.2014
Сообщений: 220
|
Цитата:
================================== Ну а возьмем мы такой например алгоритм: Делаем 5 потоков, запускаем их параллельно разом! Все потоки стартуют одновременно, идет загрузка 5 страниц сразу! Затем (делаем какую то паузу) ждем когда доработает последний поток и запускаем 5 потоков снова! Нормальный алгоритм? И программа вроде как зависнуть не должна с пяти потоков и скрость увеличится в пять раз верно? Цитата:
Последний раз редактировалось NIKOLAYY2; 06.04.2015 в 20:58. |
||
06.04.2015, 21:29 | #19 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
И в нее помести Код:
I'm learning to live...
|
|
06.04.2015, 21:30 | #20 |
Форумчанин
Регистрация: 16.01.2015
Сообщений: 672
|
продолжайте читать про потоки, потом переходите к понятию пула потоков, и тогда ждет вас удача, а пока как идеи так и код - в топку
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Массив потоков. Не приходит Terminate | grb | Общие вопросы Delphi | 4 | 26.01.2015 10:19 |
Многократное использование потоков(пул потоков) | ProgrammistRT | Общие вопросы Delphi | 10 | 06.04.2014 13:42 |
Массив потоков, и как они очищаются | Winexcel | Общие вопросы Delphi | 5 | 09.10.2013 16:43 |
Синхронизация потоков | Fireblade-fan | Общие вопросы Delphi | 5 | 17.12.2012 01:57 |
Не дать накапливаться N кол-ву потоков в критической секции. Массив. | HSR | Общие вопросы Delphi | 7 | 15.11.2012 01:02 |