Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.10.10;
Скачать: [xml.tar.bz2];

Вниз

как проверить жив ли поток???   Найти похожие ветки 

 
GanibalLector ©   (2004-08-27 13:02) [0]

Т.е.предположим имеется
TerminateThread(CommThread,0);// остановить поток
CloseHandle(CommThread);      // убийство потока

и вот как узнать,что теперь его нет ???
З.Ы. Я балуюсь с ThreadID та которая CommThread := CreateThread(nil,0,@potok,nil,0,ThreadID)
и проверяю ее на нуль.Если не нуль,то жив,если нуль то мертв.Естественно,приходится делать еще так:
TerminateThread(CommThread,0);// остановить поток
CloseHandle(CommThread);
ThreadID:=0;

но,ИМХО,существует куда более ПРАВИЛЬНЫЙ способ.Но вот какой???
Спасибо...


 
Digitman ©   (2004-08-27 13:25) [1]


> и проверяю ее на нуль


с какого перепугу она "нуль" станет ?


 
Digitman ©   (2004-08-27 13:27) [2]


> TerminateThread(CommThread,0);// остановить поток
> CloseHandle(CommThread);      // убийство потока


TerminateThread(CommThread,0);// УБИТЬ поток
CloseHandle(CommThread);      // закрыть дескриптор потока

!!


> существует куда более ПРАВИЛЬНЫЙ способ


естественно ! Ведь TerminateThread() - это функция.


 
GanibalLector ©   (2004-08-27 14:47) [3]

естественно ! Ведь TerminateThread() - это функция.
Ну и что с того???


 
GanibalLector ©   (2004-08-27 14:50) [4]

УБИТЬ поток
закрыть дескриптор потока


Согласен! От вольного комментарии писал...


 
N170   (2004-08-27 15:00) [5]

как узнать,что теперь его нет

if ( WAIT_OBJECT_0 = WaitForSingleObject(handle) ) then .... {dead}


 
N170   (2004-08-27 15:02) [6]

поправка WaitForSingleObject(handle,0)


 
Digitman ©   (2004-08-27 15:08) [7]


> GanibalLector ©   (27.08.04 14:47) [3]
> естественно ! Ведь TerminateThread() - это функция.
> Ну и что с того???


у тебя задача какая ? "убить" тред ? Ну так и "убивай" его ! Но после "попытки убийства" проверяй ее результат ! он тебе как раз и подскажет, "убил" ли ты кого или стрелял из рогатки в небо


 
GanibalLector ©   (2004-08-27 19:31) [8]

Digitman
у тебя задача какая ? "убить" тред ?

В проекте несколько форм.Так вот,в некоторых из них,есть условие:
-если поток жив(неважно,пусть даже остановленный) то делать ТО-ТО
-если мертв,то делать иное.

N170
Спасибо...ща посмотрю.


 
Digitman ©   (2004-08-29 12:00) [9]


> если поток жив(неважно,пусть даже остановленный)


.. и создал, например, очередь сообщений (Peekmessage, GetMessage), то ф-ция PostThreadMessage() вернет True - это один из вариантов проверки


 
Ertong ©   (2004-08-31 02:30) [10]


> -если поток жив(неважно,пусть даже остановленный) то делать
> ТО-ТО
> -если мертв,то делать иное.

А почему-бы не создать для этого мютекс.



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.10.10;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.059 c
14-1095768383
SergeySEM
2004-09-21 16:06
2004.10.10
Какое сегодня число


3-1092807793
TeNY
2004-08-18 09:43
2004.10.10
Как создать независимую базу данных


1-1096020892
П7
2004-09-24 14:14
2004.10.10
Позднее связываение Excel и OLE контейнер


1-1095775737
hgd
2004-09-21 18:08
2004.10.10
Как залить Bitmap одним цветом?


1-1096293534
Lord de Mon
2004-09-27 17:58
2004.10.10
Ошыбки





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский