Это ваш код, который создает потоки? Если это так, вы можете создать подкласс TThread (да, опять :)), переопределить ctor, чтобы зарегистрировать threadID вызывающего и извлечь из него все остальные классы потоков. Очевидно, вам нужен поточно-безопасный регистратор - у вас, вероятно, уже есть.
Если идентификатор потока вызывающей стороны ctor не очень помогает, потому что большинство ваших потоков создаются из одного потока с множеством созданий (например, основной поток GUI), я думаю, вы могли бы как-то записать адрес возврата вызывающей стороны и попробовать и разобраться, откуда пришел звонок. Столкнувшись с такой проблемой, я боюсь, что я выберу простой, недобросовестный выход, передал дополнительный целочисленный идентификатор в конструкторе потоков и отредактировал мой код так, чтобы он передавал разные идентификаторы при каждом вызове. Да, это ужасно, но это работает. У кого-то наверняка есть лучший способ. Было бы неплохо, если бы стандартный класс TThread.create в классах содержал дополнительный параметр: anObject для «передачи» в конструктор / поток, но, к сожалению, нет: ((
Я просто должен спросить, почему вы создаете так много тем? Довольно редко я создаю какой-либо поток после запуска приложения или прекращаю его перед закрытием приложения (на самом деле, я не беспокоюсь о том, чтобы завершать их явно при закрытии потока - ExitProcess () делает хорошую работу:).
Rgds,
Martin