Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Корректное завершение потока

2.2K
15 января 2003 года
arnold
3 / / 01.11.2002
Моя программка сканирует сеть. Естественно, что рабочий поток сканирует, посылает результаты в окно основного потока. Проблема в том, что не удается завершить рабочий поток, событием из основного потока, т.к. функции сканирования сети довольно сильно тормозят, а если грубо его заглушить, то утечка памяти.

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

Как завершить корректно "задумавшийся" поток ?



используй асинхронные ф-ции WinSocket'а

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог