Многопоточность в плагинах на Delphi
Select messages from
# through # FAQ
[/[Print]\]

Total Commander -> Написание плагинов для Total Commander

#1: Многопоточность в плагинах на Delphi Author: Dec PostPosted: Sat Feb 18, 2012 10:01
    —
Недавно я в одном своем проекте, использующем свою систему плагинов, бился с непонятным багом, который проявлялся в ошибках доступа к памяти. Ошибка возникала в плагинах в разных местах при разных входных данных. Функций из плагинов вызывались из множества потоков. Я перелопатил весь свой код, пытаясь понять закономерность, но безуспешно. Но случайно вспомнил про хитрую переменную IsMultiThread модуля System, отвечающую за работу менеджера памяти. Установил ее в плагинах в True, тем самым переведя менеджер памяти в многопоточный режим работы, и ошибка исчезла.

Теоретически, функции в плагинах к TC тоже могут вызываться из разных потоков. А поскольку IsMultiThread по умолчанию равно False, то вы можете поиметь такие же проблемы, как и я. Поэтому рекомендую в ваших плагинах, допускающих многопоточность, устанавливать IsMultiThread в True.



Total Commander -> Написание плагинов для Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Page 1 of 1

Powered by phpBB © 2001, 2005 phpBB Group