Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Компоненты и классы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 01.09.2012, 18:08
Аватар для Uniq!
Uniq! Uniq! вне форума
Местный
 
Регистрация: 29.09.2010
Сообщения: 539
Версия Delphi: Delphi XE3
Репутация: 374
По умолчанию Многопоточная Обработка web-страниц

В общем в таблице есть список ссылок, по которым надо пройтись (Скачать) распарсить. Всё что касается парсинга и скачивания уже готово.

На 2к страниц тратится около 9-15 минут, естественно без учёта ширины канала, и мощности компьютера. Хотелось бы как-то это оптимизировать.

google подсказал многопоточность. Только вот вопросы возникли: как контролировать количество потоков? Как передавать потоку ТУ ссылку, которая ещё не обработана?
Ответить с цитированием
  #2  
Старый 02.09.2012, 08:47
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

-завести глобальный счетчик потоков
-при создании потока инкрементировать значение, при завершении декрементировать, естественно в критических секциях
-ссылку очень удобно передать в конструктор потока
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #3  
Старый 02.09.2012, 11:09
Аватар для Uniq!
Uniq! Uniq! вне форума
Местный
 
Регистрация: 29.09.2010
Сообщения: 539
Версия Delphi: Delphi XE3
Репутация: 374
По умолчанию

А как отследить ссылка уже в обработке или ещё её никто "не трогал".
Собрать класс TLink с двумя свойствами fLink и fBusy? пойдёт такое решение?
Ответить с цитированием
  #4  
Старый 02.09.2012, 11:27
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

ну а как у тебя сейчас отслеживается? нужно ли вообще отслеживать?
в классе потока достаточно только ссылку описать. сделать 3 глобальные функции, код защитить критическими секциями: inc_num, dec_num, get_num. в цикле по списку ссылок создавать ограниченное количество потоков (get_num < X). при создании нового потока счетчик увеличивается, при разрушении уменьшается.
можно и через семафор сделать контроль количества потоков.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 11:06.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter