На платформе Windows TCriticalSection реализуется путем вызова API Windows EnterCriticalSection/LeaveCriticalSection. Документация Microsoft прямо говорит, что после того, как поток имеет право собственности на критический раздел, он может совершать дополнительные вызовы для EnterCriticalSection.Может ли TCriticalSection.Acquire безопасно звонить более одного раза по потоку?
Пока все хорошо.
Но как насчет поведения других платформ, поддерживаемых Delphi, таких как OSX, iOS и Android?
Другие платформы, похоже, используют TMonitor. Поэтому вопрос может быть переписан с TMonitor.
Может TMonitor доверять в xe5? Предыдущие версии Delphi выявили проблемы с TMonitor ... – whosrdaddy
@Uwe Raabe Я видел, что TCriticalSection использует TMonitor, но я не нашел TMonitor, зарегистрированного в DocWiki/XE5. Я редактировал свой вопрос, чтобы добавить в него TMonitor. – fpiette
@whosrdaddy Мне не нужны старые версии Delphi. Я использую XE5. – fpiette