Корректное завершение потока
Как завершить корректно "задумавшийся" поток ?
есть один интересный вариант - я не пробовал, но должно сработать.
1) блок "тормозных" ф-й возми в __try/ __except
2) для выхода из глухой ф-и можно вызвать исключение, к-е переведет тебя в __except блок - очистишь память и выйдешь из потока самостоятельно.
---
как вызвать исключение в потоке (тупой пример):
1) GetThreadContext - получим контекст рабочего потока (не забудь флаги c.context_flags..)
2) переводим Eip например на 0х000
3) SetThreadContext - вот и исключение
Цитата:
Originally posted by arnold
Моя программка сканирует сеть. Естественно, что рабочий поток сканирует, посылает результаты в окно основного потока. Проблема в том, что не удается завершить рабочий поток, событием из основного потока, т.к. функции сканирования сети довольно сильно тормозят, а если грубо его заглушить, то утечка памяти.
Как завершить корректно "задумавшийся" поток ?
Моя программка сканирует сеть. Естественно, что рабочий поток сканирует, посылает результаты в окно основного потока. Проблема в том, что не удается завершить рабочий поток, событием из основного потока, т.к. функции сканирования сети довольно сильно тормозят, а если грубо его заглушить, то утечка памяти.
Как завершить корректно "задумавшийся" поток ?
используй асинхронные ф-ции WinSocket'а