Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > вернуть значение из нити (Tread)


Автор: MARIA123 30.1.2012, 19:15
Доброго всем времени суток!
Помогите справиться со следующей проблемой.

В приложении есть основной поток  и в определенный момент он создает дочерний поток с помощью Tread. Но основное приложение не ждет завершения дочернего потока.

Вопрос: как дочернему потоку сообщить, что он уже закончил свою работу? Или же как это можно реализовать другими средствами?

Автор: Dem_max 30.1.2012, 19:42
Цитата

как дочернему потоку сообщить, что он уже закончил свою работу?


Код

pThread->Termitate();

Автор: MARIA123 30.1.2012, 20:01
        pThread->Termitate();--но это же убивает дочерний процесс из родилеского.
А мне надо как-то родительскому процессу сообщить, что дочерний заверщился

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

Автор: Dem_max 31.1.2012, 04:34
Цитата

pThread->Termitate();--но это же убивает дочерний процесс из родилеского.

А его и не надо убивать.

Код

pThread->Termitate(); // Посылаем сигнал потоку чтобы он завершился
pThread->WaitFor(); // Ожидаем завершение потока
// дочерний поток завершился, можем дальше продолжать.

Автор: xvr 31.1.2012, 14:30
Цитата(MARIA123 @  30.1.2012,  20:01 Найти цитируемый пост)
Появилась идея, что перед закрытием нити она должна отправить сообщение приложению.

Вызовите callback функцию через Synchronize перед завершением нити


Автор: MARIA123 1.2.2012, 20:30
а что это за функция такая?гугл что-то не очень помогает

Автор: Dik0n 2.2.2012, 01:50
Что за фигню вы тут советуете, прекрасное собитие есть для этого OnTerminate

Автор: xvr 2.2.2012, 11:51
Цитата(MARIA123 @  1.2.2012,  20:30 Найти цитируемый пост)
а что это за функция такая?

Эта ваша функция, которую позовет ваш Thread, перед тем как завершится

Цитата(Dik0n @  2.2.2012,  01:50 Найти цитируемый пост)
прекрасное собитие есть для этого OnTerminate

Тоже вариант. В принципе делает именно то, что я и рекомендовал (но делает это сам  smile )

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)