![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как узнать создана ли нить [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]
> поток может быть создан
Кем ? Тобой ?