Qraizer
![](http://forum.ru-board.com/board/avatars/Ares.gif)
Advanced Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору ShIvADeSt Цитата: Если необходимо моментально прервать работу потока, то я другого способа не знаю. | Моментально необязательно. Человеческие пальцы не будут работать с той точностью, чтобы десятки или сотни миллисекунд играли роль. Немоментальные - это не прибить поток, а попросить его завершиться. Решений куча, от банального volatile флага, периодического опроса объектов синхронизации (ИМХО лучший выбор в подавляющем большинстве случаев), приостановка потока с последующим возобновлением вместо разрушения с дальнейшим созданием нового, итп. TerminateThread() плохо хотя бы тем, что после ~2000 запусков-прибитий, а скорее даже раньше, у процесса кончится виртуальная память (а у винды - возможно, свап, а если и не кончится, то раздуется, правда, не на 2Гб, поменьше). Плюс поток за собой ничего не чистит, даже деструкторы объектов на стеке не отработают. И весь этот мусор остаётся с процессом, пока он сам весь не кончится.
---------- Одни с годами умнеют, другие становятся старше. |
|