|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
27.12.2012, 11:05 | #1 |
Форумчанин
Регистрация: 04.01.2011
Сообщений: 263
|
Возможные проблемы с TThread при закачке страниц
Добрый день.
Есть функция вида function LoadPage(const Url:string):string; для закачки страниц на базе idHHP.Get, которая обеспечивает: - закачку страниц с фреймами - закачку страниц по HTTPs - смену Request.UserAgent (доп. функция) по Random из списка агентов - подавление исключений в коде idHHP.Get с записью в лог причин - вывод сообщений о утечке памяти при закрытии Арр Сама по себе функция работает нормально, загружает все страницы и без утечки памяти. Есть код запуска этой функции в многопоточном режиме: Код:
|
27.12.2012, 11:06 | #2 |
Форумчанин
Регистрация: 04.01.2011
Сообщений: 263
|
Результат:
В режиме отладки видно что возникает множество самых различных ошибок: - First chance exception at $00407466. Exception class $C0000005 with message 'access violation at 0x00407466: read of address 0x000000a4'. Process Loader_VER06.exe (2012) - First chance exception at $7C812AFB. Exception class EIdHTTPProtocolException with message 'Set-Cookie: dle_password=deleted; expires=Tue, 27-Dec-2011 20:37:50 GMT; path=/; domain=.freeseller.ru; httponly'. Process Loader_VER06.exe (2012) First chance exception at $00629F8C. Exception class $C0000005 with message 'access violation at 0x00629f8c: read of address 0x00000148'. Process Loader_VER06.exe (2012) - First chance exception at $7C812AFB. Exception class EOSError with message 'System Error. Code: 123. Синтаксическая ошибка в имени файла, имени папки или метке тома'. Process Loader_VER06.exe (2012) - First chance exception at $7C812AFB. Exception class EIdNotASocket with message 'Socket Error # 10038 Socket operation on non-socket.'. Process Loader_VER06.exe (2012) В рабочем режиме, за счет подавления исключений, все это конечно не вылазит, но: - закачиваются не все страницы(хотя все УРЛ валидные и функцией закачки закачиваются без вопросов) - после закрытия Арр выводится сообщение о многочисленных маленьких утечках памяти По теории потоки не должны пересекаться. каждый имеет свою память. вывод результата через КС. такое впечетление что потоки как то мешают друг другу Внимание!!! Вопрос: в чем может быть причина появления исключений и утечки памяти именно в режиме многопотоковой закачки? |
27.12.2012, 13:13 | #3 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,528
|
В одном потоке все работает => LoadPage не потокобезоасна. (использует и меняет не локальные данные).
Код:
Цитата:
использование одного Loader, SSL для ВСЕХ потоков. > тут много чего, но все работает, смотри в начало тоже все глобальные объекты едины для всех потоков.
программа — запись алгоритма на языке понятном транслятору
|
|
27.12.2012, 22:14 | #4 | |
Форумчанин
Регистрация: 04.01.2011
Сообщений: 263
|
Цитата:
может ICS получше будет? там вроде асинхронность врожденная. но вот как там с выбором кодировки? в последней версии ИНДИ эту проблему почти решили. и как там с HTTPs? есть возможность закачивать страницы по SSL? |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблема при закачке скрипта на сервер | Taylor1990 | JavaScript, Ajax | 3 | 15.11.2012 19:03 |
При освобождении обьекта TThread, он вешает всю программу. При этом код Execute у TThread уж выполнился.. | Человек_Борща | Общие вопросы Delphi | 23 | 30.11.2011 09:18 |
Проблемы кодировки при создании .CFM страниц в Dreamweaver CS3 | bp-alex | Софт | 1 | 01.05.2010 17:51 |
Как узнать скорость при закачке tIdHttp.get? | Altera | Работа с сетью в Delphi | 7 | 09.04.2009 11:27 |
Заблокировать запуск exe из IE при закачке | Igoressicus | Помощь студентам | 5 | 19.02.2009 11:59 |