Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Многопоточность 
:(
    Опции темы
Mach3
Дата 25.3.2011, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 26.11.2005

Репутация: нет
Всего: 2



Добрый день.
Появилась необходимость переделать программу, используя несколько потоков.
Суть работы программы, примерно, в следующем: каждый промежуток времени программа проверяет наличие новой информаци на сайте. При наличии таковой, сравнивает ее с инфой с другого сайта и в случае выполнения определенных условий- информирует пользователя.
В настоящий момент все работает в одном потоке:
user posted image
Появилась необходимость проверять инфу на нескольких сайтах. 
Не могу сообразить как правильно "прикрутить" потоки.
Пока что все сводится к организации следующей структуры:
user posted image
Хочется сделать все правильно и граммотно. Поэтому очень хочу услышать ваше мнение или предложение..
Спасибо.
--------------------
Век живи - век учись...
PM MAIL ICQ   Вверх
cat512
Дата 25.3.2011, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 438
Регистрация: 20.3.2007

Репутация: 2
Всего: 15



Я после определённых експериментов, в своё время, пришёл к использованию многопоточной управляемой (пуловой) архитектуре, т.к. однопоточная ограничивает производительность, а многопоточная не управляемая, при росте количества потоков, снижает производительность и в конечном итоге упирается в ограничения операционной системы (не масштабируется).
Пуловая выглядит след. образом:
В основном потоке запускается Мэнеджер пула потоков, который по требованию клиента, выделяет ему необход. ресурсы(потоки) Радует то, что программеру, не нужно реализовывать такую архитектуру. Её уже реализовали парни, в библиотеке Indy, за что им отдельное спасибо.
Поэтому, сразу отправляю тебя к исходному коду классов TIdThreadMgrPool, TIdThreadMgr, TIdThread.
Работать с ними проще простого!
Основное, что тебе надо сделать - создать наследника от ТIdThread и перекрыть метод Run.
Собственно в этом методе будет реализованна часть твоего алгоритма, например
с шага 
Цитата

Загрузили страницу А

по
Цитата

Сравнили инфу А с Б

Далее, в целях оптимизации, можно еще распараллелить код, выполняя части шагов алгоритма в отдельных потоках. Но тут надо очень хорошо подумать, какие шаги алгоритма распараллеливать.
В основном потоке тебе надо будет реализовать процедуру планировщика. Что-то типа:
Держим список сайтов и последовательно обрабатываем, по максимуму загружая пул. Освободившиеся потоки, загружаем следующими по списку, необработанными ссылками.
В общих словах как-то так.
PM MAIL   Вверх
Mach3
Дата 25.3.2011, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 26.11.2005

Репутация: нет
Всего: 2



Цитата(cat512 @  25.3.2011,  18:38 Найти цитируемый пост)
Работать с ними проще простого!

Может имеется пример, демонстрирующий работу с этими компонентами?
Спасибо.

--------------------
Век живи - век учись...
PM MAIL ICQ   Вверх
cat512
Дата 26.3.2011, 01:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 438
Регистрация: 20.3.2007

Репутация: 2
Всего: 15



На вот, когда - то писал сервис, не знаю разберёшся или нет. Там один модуль из проекта





Присоединённый файл ( Кол-во скачиваний: 9 )
Присоединённый файл  uJobManager.pas 8,82 Kb
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0428 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.