Существуют различные возможности:
1) Используйте API-интерфейс TerminateThread (). Если поток не содержит блокировок других ресурсов, которые могут / потребуются другими потоками / процессами, тогда все в порядке. Обратите внимание, что этот набор потоков очень мал и его трудно точно определить - не используйте этот метод, если вы абсолютно не уверены, что он безопасен (фактически это означает «не используйте его»).
2) Если функциональность потока интенсивно использует процессор, опрашивайте логическое значение 'Abort' на каком-то подходящем уровне в вашем потоке, чтобы завершение было достаточно своевременным, но не слишком скомпрометировало его работу (т. Е. Возможно, не самый внутренний цикл) .
3) Если поток обычно блокируется на каком-либо API, попробуйте выполнить условия API «на ранних этапах», чтобы поток мог быть запущен и обнаружил логическое прерывание. Точный механизм использования зависит от конкретного API блокировки.
4) Завершить поток только при завершении работы приложения, т.е. пусть ОС делает это, когда какой-то другой поток (обычно основной поток с графическим интерфейсом) вызывает ExitProcess (). Это требует некоторых конструктивных ограничений, например. нет связи между потоками, кроме как через структуры / механизмы, которые переживают их все.
Rgds,
Martin