Потоки и события
От: atom  
Дата: 06.10.01 17:49
Оценка:
Здравствуйте!
Возникла пробемма: нужно отследить когда закончатся потоки и направить на кейс своего события, например THREADEXITS, как правильно это зделать?
Re: Потоки и события
От: ZORK Россия www.zorkaltsev.com
Дата: 06.10.01 18:11
Оценка:
Здравствуйте atom, Вы писали:

A>Здравствуйте!

A>Возникла пробемма: нужно отследить когда закончатся потоки и направить на кейс своего события, например THREADEXITS, как правильно это зделать?

То есть тебе надо узнать когда нитика полностью остановилась? Если да, то надо делать WaitForSingleObject на HANDLE для этой нитки (см. GetThreadHandle()).
Думать надо ...головой :)
Re: Потоки и события
От: VladD2 Российская Империя www.nemerle.org
Дата: 06.10.01 18:21
Оценка:
Здравствуйте atom, Вы писали:

A>Здравствуйте!

A>Возникла пробемма: нужно отследить когда закончатся потоки и направить на кейс своего события, например THREADEXITS, как правильно это зделать?

Госпда! Будте добры задавая вопрос как можно точнее формулировать его суть и объяснять, что имеется в виду под каждым из терминов (конечно если они неоднознчны).

Конкретно по этому вопросу:

"закончатся потоки" — это в смысле коток завершает свое исполнение? Если да то каким образом (сам выходит из процедуры или вызывает exit, или его убивают из вне)?

"направить на кейс" — это вообще не понятно. Бред какойто! Что такое свой кейс? Имеется в виду оператор case или чемодан? Если первое, то где он находится (поток, фукция...).

"своего события" — и здесь тоже неясность... событие может быть у COM-объекта, у Окна, или Примитивом синхронизации...


К чему бы я все это? Да дело в том, что именно из таких вопростов и формируется список вопросов без ответов. Так, что хотите чтобы на ваш вопрос ответели, потрудитесь его нормально сформулировать.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Потоки и события
От: atom  
Дата: 06.10.01 18:22
Оценка:
Здравствуйте ZORK, Вы писали:

ZORK>Здравствуйте atom, Вы писали:


A>>Здравствуйте!

A>>Возникла пробемма: нужно отследить когда закончатся потоки и направить на кейс своего события, например THREADEXITS, как правильно это зделать?

ZORK>То есть тебе надо узнать когда нитика полностью остановилась? Если да, то надо делать WaitForSingleObject на HANDLE для этой нитки (см. GetThreadHandle()).


Мне нужно определить когда произошёл выход из потока и направить на определенное событие в мой диалогпрок.
Тоесть например если произошёл выход из потока тонаправить на кейс THREADEXITEVENT.
Re[3]: Потоки и события
От: ZORK Россия www.zorkaltsev.com
Дата: 06.10.01 18:28
Оценка:
Здравствуйте atom, Вы писали:

A>Здравствуйте ZORK, Вы писали:


A>Мне нужно определить когда произошёл выход из потока и направить на определенное событие в мой диалогпрок.

A>Тоесть например если произошёл выход из потока тонаправить на кейс THREADEXITEVENT.

BTW: Потдерживаю VladD2 насчет терминалогии, и хочу на будущее уточнить, что более принято Thread переводить как Нить, а Stream как Поток, и насколько я понимаю в твоем случае мы говорим о Thread. И я в курсе что во многих русских переводах Thread переведен как Поток, но это в практическом разговоре русскоговорящих программистов, исключительно не удобно, так что — смотри мою подпись :)

Ну варианта как бы два:
— всеж-таки где-нить ждать когда нитка закончиться, или
— в конце самой нитки послать в свой диалого сообщение PostMessage, говорящие о что что нитка закончила работу
Думать надо ...головой :)
Re[4]: Потоки и события
От: Igor Soukhov  
Дата: 06.10.01 18:37
Оценка:
Здравствуйте ZORK, Вы писали:

ZORK>Здравствуйте atom, Вы писали:


A>>Здравствуйте ZORK, Вы писали:


A>>Мне нужно определить когда произошёл выход из потока и направить на определенное событие в мой диалогпрок.

A>>Тоесть например если произошёл выход из потока тонаправить на кейс THREADEXITEVENT.

ZORK>BTW: Потдерживаю VladD2 насчет терминалогии, и хочу на будущее уточнить, что более принято Thread переводить как Нить, а Stream как Поток, и насколько я понимаю в твоем случае мы говорим о Thread. И я в курсе что во многих русских переводах Thread переведен как Поток, но это в практическом разговоре русскоговорящих программистов, исключительно не удобно, так что — смотри мою подпись :)

учитель блин — поток это поток — и из контекста все понятно =)

ZORK>Ну варианта как бы два:

ZORK>- всеж-таки где-нить ждать когда нитка закончиться, или
и ждать лучше в специально созданной для этого нитке, тьфу — потоке =)
* thriving in a production environment *
Re[5]: Потоки и события
От: ZORK Россия www.zorkaltsev.com
Дата: 06.10.01 18:40
Оценка:
Здравствуйте Igor Soukhov, Вы писали:

IS>Здравствуйте ZORK, Вы писали:


ZORK>>Здравствуйте atom, Вы писали:


A>>>Здравствуйте ZORK, Вы писали:


A>>>Мне нужно определить когда произошёл выход из потока и направить на определенное событие в мой диалогпрок.

A>>>Тоесть например если произошёл выход из потока тонаправить на кейс THREADEXITEVENT.

ZORK>>BTW: Потдерживаю VladD2 насчет терминалогии, и хочу на будущее уточнить, что более принято Thread переводить как Нить, а Stream как Поток, и насколько я понимаю в твоем случае мы говорим о Thread. И я в курсе что во многих русских переводах Thread переведен как Поток, но это в практическом разговоре русскоговорящих программистов, исключительно не удобно, так что — смотри мою подпись :)

IS>учитель блин — поток это поток — и из контекста все понятно =)

Ну не скажи. А как по твоему понимать THREADEXITEVENT

ZORK>>Ну варианта как бы два:

ZORK>>- всеж-таки где-нить ждать когда нитка закончиться, или
IS>и ждать лучше в специально созданной для этого нитке, тьфу — потоке =)

То есть ты настаиваешь на том что Thread = поток? ...а Stream, тогда как переводить?
Думать надо ...головой :)
Re[6]: Потоки и события
От: Igor Soukhov  
Дата: 06.10.01 18:46
Оценка:
Здравствуйте ZORK, Вы писали:

IS>>учитель блин — поток это поток — и из контекста все понятно =)


ZORK>Ну не скажи. А как по твоему понимать THREADEXITEVENT

это матерное и непереводимое слово ... его надо прочувствовать =)
лана =)

ZORK>>>Ну варианта как бы два:

ZORK>>>- всеж-таки где-нить ждать когда нитка закончиться, или
IS>>и ждать лучше в специально созданной для этого нитке, тьфу — потоке =)
ZORK>То есть ты настаиваешь на том что Thread = поток? ...а Stream, тогда как переводить?
не нада меня ловить на таких дешевых фишках =) Thread это буржуйское
слово переводтится как НИТЬ (ксати да — ты про это уже писал). А поток
— это то что создается через CreateThread. Stream уже давно никем
не переводится — он и есть стрим.
* thriving in a production environment *
Re[4]: Потоки и события
От: atom  
Дата: 06.10.01 18:46
Оценка:
Здравствуйте ZORK, Вы писали:

ZORK>Ну варианта как бы два:

ZORK>- всеж-таки где-нить ждать когда нитка закончиться, или
ZORK>- в конце самой нитки послать в свой диалого сообщение PostMessage, говорящие о что что нитка закончила работу


У меня цикл открытия нитей, их открывается около 5ти, WaitForSingleObject вообще виснет при запуске...
Re[5]: Потоки и события
От: ZORK Россия www.zorkaltsev.com
Дата: 06.10.01 18:54
Оценка:
Здравствуйте atom, Вы писали:

A>Здравствуйте ZORK, Вы писали:


ZORK>>Ну варианта как бы два:

ZORK>>- всеж-таки где-нить ждать когда нитка закончиться, или
ZORK>>- в конце самой нитки послать в свой диалого сообщение PostMessage, говорящие о что что нитка закончила работу

A>У меня цикл открытия нитей, их открывается около 5ти, WaitForSingleObject вообще виснет при запуске...


Ну наверное это потому что еще нить не остановилась, и WaitForSingleObject ждет этого момента. Очевидно ты не должен делать WaitForSingleObject в той же нитке, в которой обрабатываешь Windows сообщения. То есть варианта у тебя два:
— добавить в нитку, которую ты ждешь, в конец PostMessage твоему диалогу
— создать еще одну нитку (CreateThread) и в ней делать WaitForSingleObject, и сразу за ним посылать PostMessage тому же диалогу.

При этом, если тебе надо ждать эти пять ниток не по одиночке, а все вместе, то можно исползовать WaitForMultipleObjects(..) с третим параметром (WaitForAll) равным TRUE.
Думать надо ...головой :)
Re[6]: Потоки и события
От: atom  
Дата: 06.10.01 19:32
Оценка:
Здравствуйте ZORK, Вы писали:

ZORK>Ну наверное это потому что еще нить не остановилась, и WaitForSingleObject ждет этого момента. Очевидно ты не должен делать WaitForSingleObject в той же нитке, в которой обрабатываешь Windows сообщения. То есть варианта у тебя два:

ZORK>- добавить в нитку, которую ты ждешь, в конец PostMessage твоему диалогу
ZORK>- создать еще одну нитку (CreateThread) и в ней делать WaitForSingleObject, и сразу за ним посылать PostMessage тому же диалогу.

ZORK>При этом, если тебе надо ждать эти пять ниток не по одиночке, а все вместе, то можно исползовать WaitForMultipleObjects(..) с третим параметром (WaitForAll) равным TRUE.


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

while(GetMessage(&messages, NULL, 0, 0))
.........

но, по моему не совсем правильно вставлять это в ф-цию открытия потоков, или я не прав и можно как то по другому это обойти?
Re[7]: Потоки и события
От: VladD2 Российская Империя www.nemerle.org
Дата: 06.10.01 19:38
Оценка:
Здравствуйте ALL.

Мужити! Я тут уже 20 минут ржу... домой пойти не могу...

Теперь по делу.

Пото делу да мжно понять из контекса (и то иногда), что означает слово, но ни уже ли кто-то может согласиться, что это:
A>Возникла пробемма: нужно отследить когда закончатся потоки и направить на кейс своего события, например THREADEXITS, как правильно это зделать?
имеет хоть какое либо отношению к контексту или даже слэнгу?

А ведь это половина сообщений.

Не, ну, можно конечно и отвечать так же...

Ну, эту херень почикай этой как ее ну ифой или ета хрень мигает когды та хрень окачурится. :)
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Потоки и события
От: VladD2 Российская Империя www.nemerle.org
Дата: 06.10.01 19:41
Оценка:
Здравствуйте atom, Вы писали:

A>Зделал, спасибо только вот теперь как зделать чтобы ждать когда закончится нить и не делать пока он не закончится ничего а то он то запускается но дальше то программа работает...

A>Раньше у меня было

A> while(GetMessage(&messages, NULL, 0, 0))

A> .........

A>но, по моему не совсем правильно вставлять это в ф-цию открытия потоков, или я не прав и можно как то по другому это обойти?


Ну, так вот здесь и нужен WaitForSingleObject
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Потоки и события
От: atom  
Дата: 06.10.01 19:45
Оценка:
Здравствуйте VladD2, Вы писали:

VD>Ну, так вот здесь и нужен WaitForSingleObject


Дык программа просто виснет на запуске этой ф-ции, я уже писал об этом..
Re[9]: Потоки и события
От: VladD2 Российская Империя www.nemerle.org
Дата: 06.10.01 20:03
Оценка:
Здравствуйте atom, Вы писали:

A>Здравствуйте VladD2, Вы писали:


VD>>Ну, так вот здесь и нужен WaitForSingleObject


A>Дык программа просто виснет на запуске этой ф-ции, я уже писал об этом..


Случайно не Дельфи? А то у нас тоже проблемы с ней

Виснет оно наверное если вызвать WaitForSingleObject в начале работы. Ты пробывал делать так как тебе сказал Zork? Т.е. перед уничтожением потока посылать своему окну пост-меседж?
Если да то вот на обработчих этого пост-меседжа и надо делать WaitForSingleObject.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.