Я разрабатываю приложение для асфальтовой установки смешивания, используя поток для запуска процесса смешивания, несколько таймеров для чтения состояний системы и выполнения управляющих действий.Приложение Delphi 5 разбилось на «EInvalidPointer», когда включена поддержка Hyper-Threading, обновит IDE?
Если «Hyper-Threading
» функции disabled
, приложение будет работать бесперебойно, все в порядке; или он вызовет диалог, ворчащий, что доступ к памяти недействителен и прерван сразу после нажатия «ОК».
Не знаете, почему? Возможно, что-то не так с версией IDE, поскольку Delphi 5 был выпущен 10 августа 1999 года; может быть, нить в Delphi 5.0 не может иметь дело с новой технологией процессора?
Возможно, у управления памятью есть некоторые ошибки, может быть, режим нити не подходит для новой эры?
Я хочу обновить IDE, но поскольку есть много многолетних вставок, я понятия не имею, какой будет лучший выбор, Delphi 7? Delphi 2007 (поддерживающий OmniThreadLibrary)? RAD Studio XE6/7? Надеюсь, кто-то поможет.
Я не уверен, почему вы думаете, что это связано с D5; честно говоря, гораздо более вероятно, что это будет проблема с вашим кодом, потому что люди успешно записывают и запускают многопоточные приложения D5, так как они появились. – MartynA
Определенно: это звучит как типичная ошибка состояния гонки, которая появляется при действительном паралилизме. – pf1957
Спасибо MartynA и pf1957. В эти дни мне очень больно, оригинальные коды были написаны 12 лет назад, в прошлом году я обновляю его до версии 2013 с общим драйвером без изменений, проблема только напоминает мне совместимость драйверов, но не ошибка потока; в этом году я заменяю универсальный драйвер карты DAQ последовательным уровнем связи, который имеет дело с 6 устройствами, приложение не работает, когда все модули интегрированы и система запускается. Тестер пытается отключить функцию Hyper-Threading в BIOS, все кажется ОК. –