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 

Многопоточность в плагинах на Delphi

 
Post new topic   Reply to topic    Total Commander Forum Index -> Написание плагинов для Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Dec



Joined: 07 Sep 2006
Posts: 466

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

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

Теоретически, функции в плагинах к TC тоже могут вызываться из разных потоков. А поскольку IsMultiThread по умолчанию равно False, то вы можете поиметь такие же проблемы, как и я. Поэтому рекомендую в ваших плагинах, допускающих многопоточность, устанавливать IsMultiThread в True.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Написание плагинов для Total Commander All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group