Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как узнать создана ли нить [D7, XP]


KyRo ©   (2006-11-24 12:36:00) 

Подскажите как узнать создана ли нить ?

То есть поток может быть создан и работать , а может быть и не создан.
Работает это все в таймере и нужно для того что бы не создать его еще раз если он уже создан.

Suspended почему то при запуске всех потоков и их 100% завершении работы (Terminate или  Suspend) Выдает на первый поток что он завершился , а на второй что нет !!!

Подскажите как лучше решить эту проблему ?


Anatoly Podgoretsky   (2006-11-24 13:15:00) [1]

> KyRo  (24.11.2006 13:05:08)  [8]

Теперь это уже третий вопрос

А есть еще состояние уничтожен.

Может ты все таки сформулируешь вопрос?


Сергей М.   (2006-11-24 13:12:00) [2]


> Писать из потока куда нибуть о его статусе?


Ну зачем сразу что-то "писать" ?

У тебя есть планировщик, он создает объекты класса TThread, при этом он знает хэндлы созданных потоков. А раз знает хэндлы, то всегда может воспользоваться любой из ф-ций ожидания, например, [Msg]WaitForMultipleObjects


Anatoly Podgoretsky   (2006-11-24 13:11:00) [3]

> zdm  (24.11.2006 12:50:06)  [6]

Какие обиды, если ежедневно свыше 3000 сообщений, то храни или нет, все одно не найдешь. Один только delphimaster от 1500 до 3000 сообщений ежедневно.


Anatoly Podgoretsky   (2006-11-24 13:09:00) [4]

> KyRo  (24.11.2006 12:44:05)  [5]

Ты меняешь постановку, теперь вопрос совсем другой

> запущены ли эти потоки

а был

> создана ли нить


KyRo   (2006-11-24 13:05:00) [5]


> Раз ты создал поток, значит он гарантированно существует.
>
> Вплоть до момента его уничтожения тобой.


Так вот как мне узнать что он гарантировано закончил свою работу.
Писать из потока куда нибуть о его статусе?


Сергей М.   (2006-11-24 12:52:00) [6]


> KyRo   (24.11.06 12:40) [2]


Раз ты создал поток, значит он гарантированно существует.
Вплоть до момента его уничтожения тобой.

Заметь, что завершениепотока и уничтожениепотока - вещи разные.


zdm   (2006-11-24 12:50:00) [7]

В отличии от Анатолия(без обид естественно к нему) я храню ссылки. Мне в своё время помогла
http://www.delphimaster.ru/articles/panov/


KyRo   (2006-11-24 12:44:00) [8]


> zdm ©   (24.11.06 12:40) [3]
> c TThread всегда одна и та же проблема-отсекать момент запуска
> и отслеживание времени жизни, т.е.  "родил-отследил-убил"


Вот это мне и надо !!
У меня планировщик который запускает потоки для обработки файла сценария их работы.
В зависимости размера сценария работа потоков может быть большая и измерятся часами.
Таймер тем временем должен проверять запущены ли эти потоки и в случае если нет и есть еще задания (новые или время выполнения которых подошло)
запустить снова потоки на выполнения .
И вот я не знаю как мне проверить запущены ли эти потоки уже что бы небыло непредсказуемых ситуаций


clickmaker   (2006-11-24 12:41:00) [9]


>  [2] KyRo   (24.11.06 12:40)
> Да мной

так а в чем проблема? Сам создаешь, значит знаешь момент создания


KyRo   (2006-11-24 12:40:00) [10]

Да мной


zdm   (2006-11-24 12:40:00) [11]

c TThread всегда одна и та же проблема-отсекать момент запуска и отслеживание времени жизни, т.е.  "родил-отследил-убил"


Сергей М.   (2006-11-24 12:39:00) [12]


> поток может быть создан


Кем ? Тобой ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо