|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
Многопоточная Обработка web-страниц
В общем в таблице есть список ссылок, по которым надо пройтись (Скачать) распарсить. Всё что касается парсинга и скачивания уже готово.
На 2к страниц тратится около 9-15 минут, естественно без учёта ширины канала, и мощности компьютера. Хотелось бы как-то это оптимизировать. google подсказал многопоточность. Только вот вопросы возникли: как контролировать количество потоков? Как передавать потоку ТУ ссылку, которая ещё не обработана? |
#2
|
||||
|
||||
-завести глобальный счетчик потоков
-при создании потока инкрементировать значение, при завершении декрементировать, естественно в критических секциях -ссылку очень удобно передать в конструктор потока Пишу программы за еду. __________________ |
#3
|
||||
|
||||
А как отследить ссылка уже в обработке или ещё её никто "не трогал".
Собрать класс TLink с двумя свойствами fLink и fBusy? пойдёт такое решение? |
#4
|
||||
|
||||
ну а как у тебя сейчас отслеживается? нужно ли вообще отслеживать?
в классе потока достаточно только ссылку описать. сделать 3 глобальные функции, код защитить критическими секциями: inc_num, dec_num, get_num. в цикле по списку ссылок создавать ограниченное количество потоков (get_num < X). при создании нового потока счетчик увеличивается, при разрушении уменьшается. можно и через семафор сделать контроль количества потоков. Пишу программы за еду. __________________ |