Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Single Post  Topic: Многопоточность в плагинах на Delphi 
Author Message
Dec



PostPosted: Sat Feb 18, 2012 10:01    Post subject: Многопоточность в плагинах на Delphi Reply with quote

Недавно я в одном своем проекте, использующем свою систему плагинов, бился с непонятным багом, который проявлялся в ошибках доступа к памяти. Ошибка возникала в плагинах в разных местах при разных входных данных. Функций из плагинов вызывались из множества потоков. Я перелопатил весь свой код, пытаясь понять закономерность, но безуспешно. Но случайно вспомнил про хитрую переменную IsMultiThread модуля System, отвечающую за работу менеджера памяти. Установил ее в плагинах в True, тем самым переведя менеджер памяти в многопоточный режим работы, и ошибка исчезла.

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


Powered by phpBB © 2001, 2005 phpBB Group