это вообще-то сишный код, а TerminateThread- нужно использовать ну только в кретических местах потому, что он не освобождает корректно ресурсы сожранные ниткой, в том числе и залоченные критические секции/мутексы и пр., тоесть используя TerminateThread есть вероятность схватить дедлок, даже при банальном выделении памяти(если в crt языка malloc реализован с использованием крит. секций, а не interlock'ов).