Здравствуйте!
Возникла пробемма: нужно отследить когда закончатся потоки и направить на кейс своего события, например THREADEXITS, как правильно это зделать?
Здравствуйте atom, Вы писали:
A>Здравствуйте! A>Возникла пробемма: нужно отследить когда закончатся потоки и направить на кейс своего события, например THREADEXITS, как правильно это зделать?
То есть тебе надо узнать когда нитика полностью остановилась? Если да, то надо делать WaitForSingleObject на HANDLE для этой нитки (см. GetThreadHandle()).
Здравствуйте atom, Вы писали:
A>Здравствуйте! A>Возникла пробемма: нужно отследить когда закончатся потоки и направить на кейс своего события, например THREADEXITS, как правильно это зделать?
Госпда! Будте добры задавая вопрос как можно точнее формулировать его суть и объяснять, что имеется в виду под каждым из терминов (конечно если они неоднознчны).
Конкретно по этому вопросу:
"закончатся потоки" — это в смысле коток завершает свое исполнение? Если да то каким образом (сам выходит из процедуры или вызывает exit, или его убивают из вне)?
"направить на кейс" — это вообще не понятно. Бред какойто! Что такое свой кейс? Имеется в виду оператор case или чемодан? Если первое, то где он находится (поток, фукция...).
"своего события" — и здесь тоже неясность... событие может быть у COM-объекта, у Окна, или Примитивом синхронизации...
К чему бы я все это? Да дело в том, что именно из таких вопростов и формируется список вопросов без ответов. Так, что хотите чтобы на ваш вопрос ответели, потрудитесь его нормально сформулировать.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте ZORK, Вы писали:
ZORK>Здравствуйте atom, Вы писали:
A>>Здравствуйте! A>>Возникла пробемма: нужно отследить когда закончатся потоки и направить на кейс своего события, например THREADEXITS, как правильно это зделать?
ZORK>То есть тебе надо узнать когда нитика полностью остановилась? Если да, то надо делать WaitForSingleObject на HANDLE для этой нитки (см. GetThreadHandle()).
Мне нужно определить когда произошёл выход из потока и направить на определенное событие в мой диалогпрок.
Тоесть например если произошёл выход из потока тонаправить на кейс THREADEXITEVENT.
Здравствуйте atom, Вы писали:
A>Здравствуйте ZORK, Вы писали:
A>Мне нужно определить когда произошёл выход из потока и направить на определенное событие в мой диалогпрок. A>Тоесть например если произошёл выход из потока тонаправить на кейс THREADEXITEVENT.
BTW: Потдерживаю VladD2 насчет терминалогии, и хочу на будущее уточнить, что более принято Thread переводить как Нить, а Stream как Поток, и насколько я понимаю в твоем случае мы говорим о Thread. И я в курсе что во многих русских переводах Thread переведен как Поток, но это в практическом разговоре русскоговорящих программистов, исключительно не удобно, так что — смотри мою подпись :)
Ну варианта как бы два:
— всеж-таки где-нить ждать когда нитка закончиться, или
— в конце самой нитки послать в свой диалого сообщение PostMessage, говорящие о что что нитка закончила работу
Здравствуйте ZORK, Вы писали:
ZORK>Здравствуйте atom, Вы писали:
A>>Здравствуйте ZORK, Вы писали:
A>>Мне нужно определить когда произошёл выход из потока и направить на определенное событие в мой диалогпрок. A>>Тоесть например если произошёл выход из потока тонаправить на кейс THREADEXITEVENT.
ZORK>BTW: Потдерживаю VladD2 насчет терминалогии, и хочу на будущее уточнить, что более принято Thread переводить как Нить, а Stream как Поток, и насколько я понимаю в твоем случае мы говорим о Thread. И я в курсе что во многих русских переводах Thread переведен как Поток, но это в практическом разговоре русскоговорящих программистов, исключительно не удобно, так что — смотри мою подпись :)
учитель блин — поток это поток — и из контекста все понятно =)
ZORK>Ну варианта как бы два: ZORK>- всеж-таки где-нить ждать когда нитка закончиться, или
и ждать лучше в специально созданной для этого нитке, тьфу — потоке =)
Здравствуйте 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, тогда как переводить?
Здравствуйте ZORK, Вы писали:
IS>>учитель блин — поток это поток — и из контекста все понятно =)
ZORK>Ну не скажи. А как по твоему понимать THREADEXITEVENT
это матерное и непереводимое слово ... его надо прочувствовать =)
лана =)
ZORK>>>Ну варианта как бы два: ZORK>>>- всеж-таки где-нить ждать когда нитка закончиться, или IS>>и ждать лучше в специально созданной для этого нитке, тьфу — потоке =) ZORK>То есть ты настаиваешь на том что Thread = поток? ...а Stream, тогда как переводить?
не нада меня ловить на таких дешевых фишках =) Thread это буржуйское
слово переводтится как НИТЬ (ксати да — ты про это уже писал). А поток
— это то что создается через CreateThread. Stream уже давно никем
не переводится — он и есть стрим.
Здравствуйте ZORK, Вы писали:
ZORK>Ну варианта как бы два: ZORK>- всеж-таки где-нить ждать когда нитка закончиться, или ZORK>- в конце самой нитки послать в свой диалого сообщение PostMessage, говорящие о что что нитка закончила работу
У меня цикл открытия нитей, их открывается около 5ти, WaitForSingleObject вообще виснет при запуске...
Здравствуйте atom, Вы писали:
A>Здравствуйте ZORK, Вы писали:
ZORK>>Ну варианта как бы два: ZORK>>- всеж-таки где-нить ждать когда нитка закончиться, или ZORK>>- в конце самой нитки послать в свой диалого сообщение PostMessage, говорящие о что что нитка закончила работу
A>У меня цикл открытия нитей, их открывается около 5ти, WaitForSingleObject вообще виснет при запуске...
Ну наверное это потому что еще нить не остановилась, и WaitForSingleObject ждет этого момента. Очевидно ты не должен делать WaitForSingleObject в той же нитке, в которой обрабатываешь Windows сообщения. То есть варианта у тебя два:
— добавить в нитку, которую ты ждешь, в конец PostMessage твоему диалогу
— создать еще одну нитку (CreateThread) и в ней делать WaitForSingleObject, и сразу за ним посылать PostMessage тому же диалогу.
При этом, если тебе надо ждать эти пять ниток не по одиночке, а все вместе, то можно исползовать WaitForMultipleObjects(..) с третим параметром (WaitForAll) равным TRUE.
Здравствуйте ZORK, Вы писали:
ZORK>Ну наверное это потому что еще нить не остановилась, и WaitForSingleObject ждет этого момента. Очевидно ты не должен делать WaitForSingleObject в той же нитке, в которой обрабатываешь Windows сообщения. То есть варианта у тебя два: ZORK>- добавить в нитку, которую ты ждешь, в конец PostMessage твоему диалогу ZORK>- создать еще одну нитку (CreateThread) и в ней делать WaitForSingleObject, и сразу за ним посылать PostMessage тому же диалогу.
ZORK>При этом, если тебе надо ждать эти пять ниток не по одиночке, а все вместе, то можно исползовать WaitForMultipleObjects(..) с третим параметром (WaitForAll) равным TRUE.
Зделал, спасибо только вот теперь как зделать чтобы ждать когда закончится нить и не делать пока он не закончится ничего а то он то запускается но дальше то программа работает...
Раньше у меня было
Мужити! Я тут уже 20 минут ржу... домой пойти не могу...
Теперь по делу.
Пото делу да мжно понять из контекса (и то иногда), что означает слово, но ни уже ли кто-то может согласиться, что это: A>Возникла пробемма: нужно отследить когда закончатся потоки и направить на кейс своего события, например THREADEXITS, как правильно это зделать?
имеет хоть какое либо отношению к контексту или даже слэнгу?
А ведь это половина сообщений.
Не, ну, можно конечно и отвечать так же...
Ну, эту херень почикай этой как ее ну ифой или ета хрень мигает когды та хрень окачурится. :)
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте atom, Вы писали:
A>Зделал, спасибо только вот теперь как зделать чтобы ждать когда закончится нить и не делать пока он не закончится ничего а то он то запускается но дальше то программа работает... A>Раньше у меня было
A> while(GetMessage(&messages, NULL, 0, 0)) A> .........
A>но, по моему не совсем правильно вставлять это в ф-цию открытия потоков, или я не прав и можно как то по другому это обойти?
Ну, так вот здесь и нужен WaitForSingleObject
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте atom, Вы писали:
A>Здравствуйте VladD2, Вы писали:
VD>>Ну, так вот здесь и нужен WaitForSingleObject
A>Дык программа просто виснет на запуске этой ф-ции, я уже писал об этом..
Случайно не Дельфи? А то у нас тоже проблемы с ней
Виснет оно наверное если вызвать WaitForSingleObject в начале работы. Ты пробывал делать так как тебе сказал Zork? Т.е. перед уничтожением потока посылать своему окну пост-меседж?
Если да то вот на обработчих этого пост-меседжа и надо делать WaitForSingleObject.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.