Спасибо. Еще вопрос:
Есть функция
void ParseJsonArraySens(String my)
Теперь вызываем эту функцию из потока:
void __fastcall TForm1Main::IdTCPServer1Execute(TIdContext *AContext)
{
String elem;
//***
ParseJsonArraySens(elem)
В это время из другого потока IdTCPServer1Execute опять же вызывается void ParseJsonArraySens(String my)
Будет ли происходит работа функции void ParseJsonArraySens(String my) в каждом потоке отдельно?
Да, конечно. Вообще, лучше почитай про потоки, чтобы лучше знать, как они работают, как используют память. В двух словах, потоки могут вызывать любые функции и методы и использовать любые объекты при условии, что они не затрагивают общие ресурсы, т.е. нет ситуаций, когда одновременно используются разными потоками одни и те же переменные. Такие ситуации называют data racing, bottlenecking и другими такими плохими словами
Для этих случаев (и только для них!) существует множество способов заставить потоки работать правильно и ничего не напутать в памяти. Например, мьютексы, семафоры, критические секции, волатильные и атомарные переменные, использование потоковых пулов, очередь сообщений и т.д. и т.п...