Информация об изменениях

Сообщение Re[3]: Узнать кто создал поток от 22.08.2017 7:42

Изменено 22.08.2017 7:43 ononim

Re[3]: Узнать кто создал поток
O>>ExitThread хукать необязательно, можно просто открывать (дублицировать в себя) и ждать контролируемые потоки (RegisterWaitForSingleObject прям так и напрашивается)
AG>Для отслеживания завершения потока достаточно контроля через DLL_THREAD_DETACH из DllMain либо TLS Callback, наверное
топикстартер не говорил что у него под рукой еще и своя длл есть.

AG>Решение на ожиданиях гипотетически подвержено гонке: поток уже завершился, и может быть новый поток с таким ID (практически нет, recycle там долгий).

Нет. Пока есть хоть один незакрытый хэндл на поток, его ID не переюзают.

AG>Но зато оно справится с TerminateThread или прямым NtTerminateThread ( для психов, готовых поддерживать такие сценарии ).

Да
Re[3]: Узнать кто создал поток
O>>ExitThread хукать необязательно, можно просто открывать (дублицировать в себя) и ждать контролируемые потоки (RegisterWaitForSingleObject прям так и напрашивается)
AG>Для отслеживания завершения потока достаточно контроля через DLL_THREAD_DETACH из DllMain либо TLS Callback, наверное
топикстартер не говорил что у него под рукой еще и своя длл есть. Впрочем FlsCallback()-у она не нужна

AG>Решение на ожиданиях гипотетически подвержено гонке: поток уже завершился, и может быть новый поток с таким ID (практически нет, recycle там долгий).

Нет. Пока есть хоть один незакрытый хэндл на поток, его ID не переюзают.

AG>Но зато оно справится с TerminateThread или прямым NtTerminateThread ( для психов, готовых поддерживать такие сценарии ).

Да