Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Завершение потока, Трэды 
:(
    Опции темы
En_t_end
Дата 5.1.2005, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: нет
Всего: 20



Надо завершить дополнительный поток...
Вот так я делаю :
Код



               LPDWORD lp_my_ret;
TerminateThread(Main_pot->m_hThread, 0);
GetExitCodeThread(Main_pot->m_hThread, lp_my_ret);
while(*lp_my_ret == STILL_ACTIVE)
{
        Sleep(10);
}
GlobalFree(Main_pot);

Программа компилиться, но при тестировании выпадает некоректное юзание памятью smile
Что скажете ?
Я использую этот способ(экстр. завершение), потому что данный код исполняется в главном потоке, а не в дополнительном...

Это сообщение отредактировал(а) chipset - 5.1.2005, 15:03
PM MAIL ICQ Skype GTalk Jabber   Вверх
chipset
Дата 5.1.2005, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 2
Всего: 165



Цитата(En_t_end @ 5.1.2005, 04:02)
GlobalFree(Main_pot);

А проверять не забываем память? smile
Он у тебя не static обьект случаем?



--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
En_t_end
Дата 5.1.2005, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: нет
Всего: 20



chipset
Да... после создания потока, я установил m_bAutoDelete = FALSE, так что в памяти действительно будет висеть Main_pot(вернее его остатки smile), и вообще я методом тыка комментил GlobalFree(), всё равно такая же лажа smile
Проблема имхо тут :
"GetExitCodeThread(Main_pot->m_hThread, lp_my_ret);
while(*lp_my_ret == STILL_ACTIVE)"
Добавлено @ 15:18
CWinThread *Main_pot;

Это сообщение отредактировал(а) En_t_end - 5.1.2005, 15:20
PM MAIL ICQ Skype GTalk Jabber   Вверх
chipset
Дата 5.1.2005, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 2
Всего: 165



Пройдись дебаггером и посмотри где происходит выброс памяти.
Желательно ещё использовать клавишу F11 (в VC7.1).

Это сообщение отредактировал(а) chipset - 5.1.2005, 15:19


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
cardinal
Дата 5.1.2005, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 1
Всего: 99



En_t_end, тут я раз уже своими мыслями делился smile
http://forum.vingrad.ru/index.php?showtopi...ndpost&p=276689


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
En_t_end
Дата 5.1.2005, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: нет
Всего: 20



Прошёлся по-этапно дебаггером, ошибка здесь :
*lp_my_ret == STILL_ACTIVE
Почему сравнение не правильно ?
Добавлено @ 15:29
cardinal
А где именно ты говорил про аннологичную ситуацию ?
Тут проблемма имхо в другом...
PM MAIL ICQ Skype GTalk Jabber   Вверх
chipset
Дата 5.1.2005, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 2
Всего: 165



Цитата(En_t_end @ 5.1.2005, 04:26)
*lp_my_ret == STILL_ACTIVE

Память не выделил для lp_my_ret smile


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
En_t_end
Дата 5.1.2005, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: нет
Всего: 20



LPDWORD lp_my_ret;
TerminateThread(Main_pot->m_hThread, 0);
GetExitCodeThread(Main_pot->m_hThread, lp_my_ret);
while(*lp_my_ret == STILL_ACTIVE)
{
Sleep(10);
GetExitCodeThread(Main_pot->m_hThread, lp_my_ret);
}
GlobalFree(Main_pot);
//Забыл то самое главное smile : GetExitCodeThread(Main_pot->m_hThread, lp_my_ret);
Цикл вообще не правильно организовал smile
Сейчас ещё раз дебагером пройдусь...

PM MAIL ICQ Skype GTalk Jabber   Вверх
chipset
Дата 5.1.2005, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 2
Всего: 165



En_t_end, лишний раз щелкай кнопкой "Код", так гораздо удобнее читать ;)


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
En_t_end
Дата 5.1.2005, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: нет
Всего: 20



Ага теперь материться на GetExitCodeThread(Main_pot->m_hThread, lp_my_ret), видно не правильно я в lp_my_ret статус ложу smile

Добавлено @ 15:36
"лишний раз щелкай кнопкой "Код", так гораздо удобнее читать ;)"
Не могу smile... не работает, причём не только на этом форуме...
PM MAIL ICQ Skype GTalk Jabber   Вверх
chipset
Дата 5.1.2005, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 2
Всего: 165



Цитата(En_t_end @ 5.1.2005, 04:35)
Ага теперь материться на GetExitCodeThread(Main_pot->m_hThread, lp_my_ret), видно не правильно я в lp_my_ret статус ложу smile

Память выделяй для lp_my_ret
Примерно так: lp_my_ret = new DWORD;
Добавлено @ 15:43
Цитата(En_t_end @ 5.1.2005, 04:35)
Не могу smile... не работает, причём не только на этом форуме...

Какой браузер?


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
En_t_end
Дата 5.1.2005, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: нет
Всего: 20



Какой браузер?
Micr. Enternet Expl.
Это имхо в поддержке java проблемма... так как любой жабовский скрипт, на моем компе запускаться не хочет, просто ничего не делает smile
Всё заработало
Chipset Спасибо...
Действительно память не выделил smile
"+" репутация...
PM MAIL ICQ Skype GTalk Jabber   Вверх
chipset
Дата 5.1.2005, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 2
Всего: 165



Цитата(En_t_end @ 5.1.2005, 04:48)
Действительно память не выделил smile

Надо бы это в фак занести, я на этой фигне дни тратил...


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
chipset
Дата 5.1.2005, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 2
Всего: 165



Модератор: перенесено из Visual C++/MFC/WTL в Системное программирование


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
En_t_end
Дата 5.1.2005, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: нет
Всего: 20



ОФФТОП почему из Visual C++/MFC/WTL в Системное программирование ???
Тут теперь ещё странность одна...
Если допустим поток завершился во время спячки(Sleep(-n-)), то, если я захочу создать ещё раз этот поток, то в локальных переменных этого потока оказывается такая чушь !!!
Интересно из-за чего это ?
PM MAIL ICQ Skype GTalk Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0553 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.