![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос по потокам [D5, WinXP]
Smithson © (2002-04-27 11:55:00)Обнаружил интересную вещь. Операционная система Windowx XP + Delphi 5.5
Запускаю ШЕСТЬ потоков. Диспетчер задач показывает, что для данного приложения работает ВОСЕМЬ
потоков (6+2). Одни дополнительный - это основной поток программы, а второй? Далее. Завершаю потоки.
ВСЕ. Для данного приложения остается от ТРЕХ до ПЯТИ активных потоков. Это как? Может кто-нибудь
разъяснить такое чудо?
NailS (2002-04-27 19:39:00) [1]Что потоки делают? Какие компоненты используются?
Довольно часто компоненты создают свои потоки (например для работы с сетью).
Попробуй поискать когда запускается лишний поток ;)
А то что потоки остаются, значит ты их просто не останавливаешь, а где, как и почему без кода можно долго гадать.
Vovchik (2002-04-27 13:13:00) [2]Может и ХР. Я с ней немного поигрался, она несколько раз висла намертво и часто падала в синий экран. Она пока ещё очень сырая, но чтобы неправилько определять кол-во нитей - это слишком.
А пробовал с CloseHandle разбираться?
Smithson (2002-04-27 13:06:00) [3]>> Может быть, дельфи делает две нити? Сделай просто пустое приложение, запусти и посмотри
>> склько там нитей.
Делал. Одна. Мог бы предположить, что какой-либо из потоков (извини, привык) виснет - но нет, делал
простой цикл в Execute - все тоже. Может, XP?
Vovchik (2002-04-27 12:31:00) [4]Лучше говорить "нитей", а не "потоков". "Поток" - это попсовый перевод.
Откуда берётся лишняя нить, не могу сказать, такое надо видеть. Может быть, дельфи делает две нити? Сделай просто пустое приложение, запусти и посмотри склько там нитей.
А что касаемо остающихся после убиения нитей, то есть один тонкий момент. В SDK написано, что нить остаётся в памяти, пока на неё не будут закрыты все хэндлы. Т.е., если ты нить убил, но не сделал CloseHandle(), то формально объект остаётся в памяти. Посмотри как это выглядит в Линухе. Там нити остаются, у них меняется атрибут, по которому можно понять, что нить мёртвая и от неё только "название" осталось.