![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы
![]() |
Поиск в этой теме
![]() |
![]() |
#1 |
Регистрация: 26.12.2010
Сообщений: 8
|
![]()
Доброго времени суток всем!
В первый раз использую потоки в Делфи, и возникли кой какие сложности. Помогите пжлст люди добрые.) Не могу организовать работу потоков в цикле. Для примера взял парсинг интернет страничек. Пользователь указывает кол-во потоков для парсинга, и дает список урлов, которые надо спарсить. Когда потоков больше урлов (или равно), у меня легко получается) А когда их меньше, ни как ![]() Видимо, что то делаю не правильно. Попробовал разными способами, вот два из них: В Edit1 кол-во потоков, в Memo9 список урлов для парсинга, Memo1 для вывода, Button1Click - начало процесса 1. Потоки создаются, и уничтожаются после выполнения задания. Пытался без уничтожения, используя Suspend, но не получается все равно достичь желаемого. Код:
при установке их флага в true. Код:
|
![]() |
![]() |
![]() |
#2 |
Регистрация: 26.12.2010
Сообщений: 8
|
![]()
Еще пробовал реализовать с помощью общего счетчика, который при запуске потока +1, при закрытии -1. Когда счетчик=0, то запускаем потоки по новой. Так тоже не работает.
Наверно, можно сказать, что мне нужен некий пул потоков, скелет этого пула. Ребята, пжлст, поделитесь знаниями. С уважением. |
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 06.08.2007
Сообщений: 2,183
|
![]()
Что то типа этого?
|
![]() |
![]() |
![]() |
#4 | |
Регистрация: 26.12.2010
Сообщений: 8
|
![]() Цитата:
Например: Код:
Сам поток и процедура вывода: Код:
Последний раз редактировалось ProgrammistRT; 28.03.2014 в 03:40. Причина: добавил |
|
![]() |
![]() |
![]() |
#5 |
Регистрация: 26.12.2010
Сообщений: 8
|
![]()
Ребята, помогите пжлст, готов купить консультацию.
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,542
|
![]() Код:
либо sleep(10000) заменить на Код:
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 28.03.2014 в 12:09. |
![]() |
![]() |
![]() |
#7 |
Регистрация: 26.12.2010
Сообщений: 8
|
![]()
evg_m, попробовал, не помогает. Вообще, этот слип не нужен, просто с помощью него я выявил проблему
|
![]() |
![]() |
![]() |
#8 |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
![]()
Форма
Form1.jpg Модуль формы Код:
Код:
Имеем то, что имеем. Работает. Эт хорошо. Но... Код HTML:
Поток Реально Строка Время 0 0 0 78 2 2 2 234 0 5 5 437 3 3 3 437 1 1 1 469 4 4 4 469 2 6 6 469 3 8 8 750 0 7 7 890 1 9 9 937 Сегодня уже пора спать. Завтра попробую добить тему своим генеальным кодом ![]() |
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 19.08.2011
Сообщений: 329
|
![]()
ProgrammistRT, не обязательно использовать "пул потоков" =) Проще для каждого потока выделить определенную часть списка ссылок для парсинга.
http://www.programmersforum.ru/showthread.php?t=223574 Обратите внимание на #12 пост |
![]() |
![]() |
![]() |
#10 |
Пользователь
Регистрация: 04.03.2014
Сообщений: 15
|
![]()
Как бы сделал я, все общии ресурсы вынес с отдельную структуру(может класс с методами для их управления), В главном потоке объявил бы критическую секцию(использовал бы ее для редактирования общих данных), далее сделал бы всего один поток, отладил бы всю программу считая его единым потоком, а потом как все заработало, то доделал бы управление потоками.
По вашему коду, могу сказать, что синхронизация используется некорректно, легко может привести к тупикам. Вам как минимум необходимо прочитать про потоки и узнать что такое их состояния. и еще строчки вида while 1<>0 do не должны присутствовать в потоках, т.к. это не даст вам надежного(корректного) завершения потока. Последний раз редактировалось opencloser; 02.04.2014 в 15:17. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Использование потоков в c# | maxwel6064 | Общие вопросы .NET | 3 | 19.03.2014 15:52 |
Поток vs пул потоков | wanes101 | Общие вопросы .NET | 4 | 10.07.2013 21:15 |
IOCP и Пул потоков | Neobrat | Работа с сетью в Delphi | 0 | 24.07.2012 13:10 |
Пул потоков | nikol_ | Общие вопросы Delphi | 18 | 26.01.2012 12:07 |
Использование потоков | Repz | Общие вопросы Delphi | 6 | 25.01.2008 14:20 |