Показать сообщение отдельно
  #2  
Старый 01.02.2012, 03:53
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,029
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Тебе в сторону CriticalSection.
Собственно, тебе надо сделать следующую вещь (как бы делал я):
1. Делаем объект-одиночку для списка адресов.
2. Делаем объект пула потоков. Можно помотреть, по-моему в Indy уже такой есть. Его задача контролировать сам список потоков.
3. Делаем класс потоков. В своем состоянии ничего не делания он должен каждые по-секунды, например, просыаться и спрашивать у объекта одиночки - есть ли задания для него. Если нет - то засыпаем опять. Получения задания нужно сделать через CriticalSection, что не даст нескольким потокам вытащить один и тот же адрес. В этом месте они просто встанут в очередь.
4. Потоки можно создать сразу и уничтожить при закрытии программы.

Это простой вариант. Есть еще сложный, когда потоки будут извещать о том, что им делать нечего и умирать, а какой-нить менеджер будет из создавать и раздавать задания. Вопрос - нужно ли это.
Ответить с цитированием