2014-10-17 3 views
1

У меня есть задача, где мне нужно сделать некоторые тяжелые вещи CPU/RAM. В результате я должен выполнить некоторые запросы к базе данных. Все это я должен делать в тысячу раз, поэтому я делаю это в фоновом потоке. Теперь я рассматриваю возможность разделения каждой задачи на две части и разделение их между двумя отдельными потоками, так что первому потоку не нужно ждать завершения запросов к базе данных. Затем он мог использовать материал CPU/RAM для второго раунда, в то время как второй поток ожидает запросов к базе данных первого раунда, и все ускорится.Можно ли создать экземпляр TThread-потомок изнутри потока?

Теперь, можно ли создать экземпляр второго потомка TThread из первого? Или мне нужно создать экземпляры TThread из MainThread? Я мог бы сделать то и другое, но создание второго из первого было бы проще в моем случае, и это будет следовать парадигме oop, поскольку второй поток будет прозрачным для остальной части программы.

+5

Это совершенно безопасно. – TLama

+0

Я не понимаю, почему это проблема. – mg30rg

+1

Я просто не предполагаю, что материал VCL является потокобезопасным, а TThread настолько сложным, что я просто слишком ленив, чтобы самостоятельно исследовать его. Кроме того, это было бы гораздо более подверженным ошибкам из-за сложной сложности TThread. – RSE

ответ

4

Я делал это много раз в производственном коде, и это никогда не было настоящей проблемой. Я могу сказать, что это абсолютно безопасно.