|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
23.03.2014, 20:43 | #1 |
Форумчанин
Регистрация: 01.10.2012
Сообщений: 106
|
Проблемы с потоком
Добрый день , сделал поток который просто переходит по ссылкам , что загружены в accounts , но вот где то я намудрил , и гет запрос идет только , сколько я поставил потоков, к примеру : ссылок загрузил 50 , а потоков поставил 30 , то гет запрос был произведен 31 раз .....
вот как вызываю : Код:
Код:
что не так я сделал ? + в другом приложении анологичная проблема, только гет запросы идет чуть дольше , тобишь загрузил 1000 ссылок , поставил 100 потоков, а перешло всего 150-200 .... ну мнеб с этим разобраться ... жду ваших советов ибо сам не знаю ... |
23.03.2014, 22:09 | #2 |
Форумчанин
Регистрация: 01.10.2012
Сообщений: 106
|
помогите... неужели никто не знает ?
|
23.03.2014, 23:00 | #3 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Как я понял ты создаешь кол-во потоков описанное в sSpinEdit1.
А соответственно такое же число ссылок и будет загружено. Смекаешь? Тебе нужно видимо такое: Код:
Только не забудь: Если Кол-Во_Ссылок будет меньше чем sSpinEdit1.Value - могут быть проблемы, так что это тоже придется учитывать.
I'm learning to live...
|
23.03.2014, 23:14 | #4 | |
Форумчанин
Регистрация: 01.10.2012
Сообщений: 106
|
тобишь ссылки я загружаю в переменную accounts (типа стринглист) это будет выглядеть тогда так : accounts.Count=0; ?
Цитата:
и еще , при вызове таким образом (только изменил кнопку вызова, поток не трогал ) сначала дает ошибку, что не хватает памяти , но переходит по всем запросам норм ! как убрать ошибку о нехватки памяти ? |
|
23.03.2014, 23:18 | #5 |
Форумчанин
Регистрация: 01.10.2012
Сообщений: 106
|
хотя нет , я поток подправил в начала заменил while Work3 do на while Acc3<Accounts.Count do и убрал if Work3 then begin + убрал один end; в конце, только тогда она дает ошибку , но все же переходит по всем ссылкам, в другом случае только дает ошибку .... как убрать ошибку ?
вот такая ошибка : thread creation error недостаточно памяти для обработки команды |
24.03.2014, 09:21 | #6 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Тебе нужно делать так называемый пул потоков. Т.е. нужен список потоков, у которого есть некий предел, в твоем случае sSpinEdit1.
Так вот в этом пуле (Допустим это еще одна Thread) нужно в цикле проверять количество работающих потоков, и если оно меньше предела - создавать новый поток и дописывать его в список, хранящий работающие потоки. У меня сейчас нет времени написать полностью что я имею ввиду, но тебе нужно использовать TThreadList для хранения списка потоков.
I'm learning to live...
|
24.03.2014, 12:37 | #7 |
Форумчанин
Регистрация: 01.10.2012
Сообщений: 106
|
не работал с TThreadList , в рунете нашел что-то типо этого :
Код:
|
24.03.2014, 18:00 | #8 |
Форумчанин
Регистрация: 01.10.2012
Сообщений: 106
|
помогите ...неужели никто помочь не может ?
|
24.03.2014, 18:21 | #9 |
Форумчанин
Регистрация: 01.10.2012
Сообщений: 106
|
жаль ... ят думал
|
24.03.2014, 22:35 | #10 | |
Форумчанин
Регистрация: 13.05.2010
Сообщений: 670
|
Цитата:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблема с потоком | Aleksandr | Общие вопросы Delphi | 1 | 28.03.2013 18:45 |
Проблемы с потоком | HELMOS | Общие вопросы Delphi | 16 | 01.02.2013 23:30 |
Проблемы с потоком | spydark91 | Общие вопросы Delphi | 38 | 23.06.2011 16:23 |
Работа с потоком | Yur@ | Общие вопросы Delphi | 3 | 02.06.2011 12:46 |
Проблема с потоком | Araver | Общие вопросы Delphi | 4 | 16.10.2007 04:30 |