Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
March Гость
|
Добавлено: Пт Окт 12 2001 11:13 Заголовок сообщения: Невинно убитые thread-ы... |
|
|
Народ! Подскажите, как убить thread в Win32? Дело в том, что если использовать TerminateThread, то до конца его ресурсы не убиваются и если после этого еще раз создавать, а потом убивать, то через 2000 раз (вычислено эксперементальным путем) thread больше не создастся... Как быть? |
|
Вернуться к началу |
|
![](templates/subSilver/images/spacer.gif) |
aus Гость
|
Добавлено: Пт Окт 12 2001 11:45 Заголовок сообщения: Re: Невинно убитые thread-ы... |
|
|
Попробуй ExitThread(Code), где Code - код выхода, смотри справку по MS SDK |
|
Вернуться к началу |
|
![](templates/subSilver/images/spacer.gif) |
March Гость
|
Добавлено: Пт Окт 12 2001 11:52 Заголовок сообщения: Re: Невинно убитые thread-ы... |
|
|
ExitThread должен вызваться в thread-е, а мне надо убивать его снаружи... |
|
Вернуться к началу |
|
![](templates/subSilver/images/spacer.gif) |
Beguin Гость
|
Добавлено: Пт Окт 12 2001 22:31 Заголовок сообщения: Гы-гы-гы - March... |
|
|
Ты ли это? А вообще в приснопамятном MSDN так и написано. Английским по белому: TerminateThread is used to cause a thread to exit. When this occurs, the target thread has no chance to execute any user-mode code and its initial stack is not deallocated. Следльтно умирает у тебя куча потихоньку. Вот. Завершай тред нормально и не надо вот этого... убийства, кровь, DM4...
Да, и CloseHandle можно для развлечения вызвать. |
|
Вернуться к началу |
|
![](templates/subSilver/images/spacer.gif) |
march Гость
|
Добавлено: Сб Окт 13 2001 15:34 Заголовок сообщения: Re: Гы-гы-гы - March... |
|
|
Ага, а MSDN я не читаю и обо всем знаю только по наслышке )) Но ведь должен же быть легальный способ _полноценно_ прибить тред!!! Или опять Билл кинул?... А завершить тред нормально... Не всегда это удобно... |
|
Вернуться к началу |
|
![](templates/subSilver/images/spacer.gif) |
Beguin Гость
|
Добавлено: Пн Окт 15 2001 13:51 Заголовок сообщения: Есть. Но некрасивый :) |
|
|
А ты хошь, как всегда, универсальный способ, да чтобы работал. Тут такая мысль по этому поводу: если бы у MS все "сошлось" и была бы возможность, я думаю, они бы убивали кучу треда по TerminateThread. Но, видать, не судьба. Так что... делай как все во всех учебниках, через глобальные, по отношению к функции процесса, переменные ![Smile](images/smiles/icon_smile.gif) |
|
Вернуться к началу |
|
![](templates/subSilver/images/spacer.gif) |
Андрей
Зарегистрирован: 10.04.2002 Сообщения: 47
|
Добавлено: Ср Окт 17 2001 14:03 Заголовок сообщения: Re: Невинно убитые thread-ы... |
|
|
Извращенец |
|
Вернуться к началу |
|
![](templates/subSilver/images/spacer.gif) |
Yazon dinAlt Гость
|
Добавлено: Вт Окт 30 2001 16:10 Заголовок сообщения: Re: Невинно убитые thread-ы... |
|
|
попробуй с помощью событий когда нужно удалить поток, установи/сбрось событие, а в функции потока вызови return -return, как пишет Д. Рихтер, лучший способ выхода из потока. |
|
Вернуться к началу |
|
![](templates/subSilver/images/spacer.gif) |
DiamonDZx
Зарегистрирован: 09.12.2002 Сообщения: 2
|
Добавлено: Пн Дек 09 2002 13:26 Заголовок сообщения: Re: Невинно убитые thread-ы... |
|
|
есть один способ, он он работает не всегда ... нужно вызвать в потоке исключение, а затем самому его обработать, этот способ не сработает , если поток сам обработает это исключени. Вызвать исклбчение можно если, например , открыть контехт потока и указатель на текущую исполняемую область памяти(EIP на x86)поставить на защищённую область памяти, например на 0. |
|
Вернуться к началу |
|
![](templates/subSilver/images/spacer.gif) |
|