![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| CynicRus |
|
||||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 248 Регистрация: 31.5.2012 Репутация: нет Всего: 5 |
Приветсвую уважаемых форумчан. Задача - организовать скачивание и фильтрацию данных. Использую Win 7 и Delphi XE3 Для этого было заведены кустарных очереди и глобальная крит секция типа TRTLCriticalSection.
Схематичный код очереди:
Критическая секция инициализируется в initialization разделе юнита. Очереди создаются там же. Затем я запускаю первый тред, который выглядит:
В одиночестве он нормально отрабатывает, вопросов к нему никаких. Кидает в эту кустарную очередь полученые итемы. После первого треда я запускаю второй тред вида:
Где SearchingQueue совсем другая очередь, к которой никто не обращается кроме потока 2. Так вот, по отдельности треды очень даже хорошо работают, а вот вместе - нет. Я подозреваю что проблема в функции GetPage с использованием synapse, которая выглядит:
но, критические секции в данной функции проблему не решают, да и по идее - разве не в каждом потоке используется не свой экземпляр функции? Вообщем каким образом мне заставить подобную конструкцию работать? PS: попробовал завести функцию скачивания каждую, как метод класса моего потока - не помогло. Бьётся память и все тут. Переход на Indy и заведения своего экземпляра IdHTTP в каждом потоке проблему не решил, всё так же кидает exception на строку 1908 файла GetMem.inc которая выглядит как mov [eax - 4], edx. И функция зовётся SysGetMem. Это сообщение отредактировал(а) CynicRus - 29.8.2013, 09:49 |
||||||||
|
|||||||||
| CynicRus |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 248 Регистрация: 31.5.2012 Репутация: нет Всего: 5 |
Сделал в очередях критические секции локальными, вызов второго потока сделал из первого, и закомментировал добавление в searchingQueue - падать перестало...Но почему падает то? Нельзя наследоваться от Generic'ов чтоли?
|
|||
|
||||
| Illusion Dolphin |
|
||||||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1198 Регистрация: 3.5.2003 Репутация: 36 Всего: 63 |
Не виже синхронизации этой функции (надеюсь внутри она thread-safe?)
Count не thread-safe
Этого не надо
Посмотрите Call-Stack! -------------------- В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен. Шифрование и организация фотографий - Photo Database 4.5 |
||||||||
|
|||||||||
| CynicRus |
|
||||||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 248 Регистрация: 31.5.2012 Репутация: нет Всего: 5 |
FWriteLn - да, она ThreadSafe, внутри её вызов заключен в критические секции. Разбираюсь дальше, спасибо за наводку. Обрамление вызова в крит секции Count так же не помогло-( Ну а стек выглядит вот так: ![]() Это сообщение отредактировал(а) CynicRus - 29.8.2013, 11:14 |
||||||||||
|
|||||||||||
| Illusion Dolphin |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1198 Регистрация: 3.5.2003 Репутация: 36 Всего: 63 |
Верните как было, дождитесь падения и посмотрите всё-таки на Call-Stack -------------------- В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен. Шифрование и организация фотографий - Photo Database 4.5 |
|||
|
||||
| CynicRus |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 248 Регистрация: 31.5.2012 Репутация: нет Всего: 5 |
Ну вот я смотрю, и падает она в процессе работы при добавлении итема в очередь. Толи критические секции не отрабатывают, толи ещё что...Не пойму.
А вот стек падения с GetMem.ini ![]() Это сообщение отредактировал(а) CynicRus - 29.8.2013, 11:23 |
|||
|
||||
| Illusion Dolphin |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1198 Регистрация: 3.5.2003 Репутация: 36 Всего: 63 |
Вот перейдите на ThreadParser.TUrlWorker.ProcessUrl в колстеке и дважды кликните посмотрите на какой строке падает.
Добавлено через 1 минуту и 27 секунд Вы пользоваться колстеком умеете? -------------------- В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен. Шифрование и организация фотографий - Photo Database 4.5 |
|||
|
||||
| CynicRus |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 248 Регистрация: 31.5.2012 Репутация: нет Всего: 5 |
Огромное спасибо! Два дня сношался, но до такой простой вещи не додумался:) Оказалось что падает функция очистки строки от html тэгов-)))) |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |