![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Зависание Thread-ов в функциях TMemoryManager (Delphi 2005) [WinXP]
Ученик © (2005-07-22 22:05:00)Кто-нибудь сталкивался с этим на процессорах с HyperThreading ?
Как "лечили" ?
Ученик (2005-07-26 22:11:00) [1]Похоже надо было задавать вопрос в WinApi, может модераторы переместят ?
Есть подходящее продолжение.
Выше было написано, что текущий вариант решения проблемы -установка одного разрешенного процессора через SetProcessAffinityMask - устанавливается первый процессор, но хотелось бы устанавливать процессор на котором выполняется главный Thread (MainThreadID), отсюда вопрос
Как узнать номер по порядку текущего процессора ?
В Windows 2003 есть функция GetCurrentProcessorNumber, а как быть в предыдущих версиях ?
Ученик (2005-07-25 07:17:00) [2]>jack128 © (24.07.05 23:07) [4]
Проблема была обнаружена при открытии формы на которой есть TcxFontNameComboBox (потом в другой форме с поиском в отдельном thread) и проблема видимо "плавающая" - на компьютере более "старом" (тоже с HT), ее не было.
>Юрий Зотов © (24.07.05 23:56) [5]
Боюсь, что с отладчиком это не связано, отладчик подключался к работающему приложению, когда приложение "зависало".
Юрий Зотов (2005-07-24 23:56:00) [3]> jack128 © (24.07.05 23:07) [4]
Исходники у Макса. Там есть мой служебный класс - имитатор TThread, но работающий в основном потоке. Был сделан именно по причине жутких тормозов, иначе отлаживаться было практически невозможно. Предполагалось, что отладка идет с ним, а рабочий вариант компилируется уже с нормальным потоком. Там это как-то очень легко переключается, в одном месте, найдешь без проблем.
> Ученик (24.07.05 20:57) [3]
Подозреваю, что это какая-то проблема взаимодействия дебаггера с XP и гипертрейдингом. А кто из них в этом виноват - дело темное.
Под ХP встречается еще одна проблема - дебаггер не видит символьных таблиц в DLL (причем после повторной загрузки этих таблиц все идет ОК).
jack128 (2005-07-24 23:07:00) [4]Юрий Зотов © (24.07.05 20:10) [2]
Сталкивался в D7 под XP (точнее, были не зависания, а жуткие тормоза - минут по 5-8). Лечил отключением гипертрейдинга
воспроизводимый пример есть?
Ученик (2005-07-24 20:57:00) [5]>tesseract © (24.07.05 19:58) [1]
Проблема именно в HyperThreading или нескольких процессорах (не проверял), при его отключении или установки одного разрешенного процессора для программы (текущий вариант) проблема уходит.
Насчет фичи не понял, вопрос был Как "лечили" ?
>Юрий Зотов © (24.07.05 20:10) [2]
Возможно и тормоза, долго не ждал, при остановке процесса и повторного запуска, зависание проходит.
Косвенный вопрос: кто виноват ? :-)
Юрий Зотов (2005-07-24 20:10:00) [6]Сталкивался в D7 под XP (точнее, были не зависания, а жуткие тормоза - минут по 5-8). Лечил отключением гипертрейдинга.
tesseract (2005-07-24 19:58:00) [7]Я с этим сталикивался на всём от Peintium 166 до Atlon XP и не только на Delphi 2005. Объясни в чём фича :-)