Я думаю, что "родные" проблемы, о которых вы говорите, не связаны с тем, как TThread
реализован, а с другими аспектами RTL:
- Менеджер памяти очень быстрый ихорошо написано, но оно не масштабируется линейно при работе с несколькими параллельными потоками на нескольких ядрах;
- Типы с подсчетом ссылок (такие как
string
и динамические массивы )реализован с помощью кода операции asm lock
для атомарного подсчета ссылок (InterlockedDecrement / InterlockedIncrement в x64), который также может плохо масштабироваться в многопоточных приложениях (то есть все ядра зависают при выполнении этого кода операции - даже если прогрессируют новые процессорыпо этому поводу реализация RCU может масштабироваться лучше.
Эти недостатки характерны для всех многопоточных библиотек - даже OTL пострадает около это .Они существуют с очень ранних версий Delphi и до сих пор существуют с Delphi XE2.64-битная реализация похожа (даже медленнее), и платформа Mac OS имеет ту же реализацию.
Пожалуйста, посмотрите этот другой вопрос SO о том, как писать масштабируемые многопоточные приложения вDelphi.
Если честно, оба приведенных выше пункта появятся только в некоторых очень специфических приложениях.
Так что не стоит беспокоиться о многопоточности в Delphi, если вы знаете эти точкии не злоупотребляйте вызовами менеджера памяти или строковыми процессами в своих потоках.