crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Завершение потока при закрытии сетевого соединения.
Sam
  опции профиля:
сообщение 17.12.2007, 17:07
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 15
Регистрация: 28.11.2007
Пользователь №: 28

Спасибо сказали: 0 раз(а)




Репутация:   0  


У меня написан некий сервер, для каждого подключения, создается свой поток.
Как бы мне сделать так, чтобы при закрытии соединения не только завершать поток, но и освобождать память, которая была выделена динамически:
QThread *pthread=new QThread;
...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 17.12.2007, 18:22
Сообщение #2


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


В классе твоего потока (конструкторе или методе, на выбор) делаешь:
connect( pConnection, SIGNAL(destroyed()), this, SLOT(destroyed()));

Где pConnection - указатель на соединение
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Sam
  опции профиля:
сообщение 17.12.2007, 19:37
Сообщение #3


Студент
*

Группа: Новичок
Сообщений: 15
Регистрация: 28.11.2007
Пользователь №: 28

Спасибо сказали: 0 раз(а)




Репутация:   0  


Спасибо. А память освобождать как? :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 17.12.2007, 20:03
Сообщение #4


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Хе-хе, забыл сказать, что нужно переопределить destroyed для потока и в нем вызывать deleteLater. :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
QCasper
  опции профиля:
сообщение 18.12.2007, 10:47
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 66
Регистрация: 26.11.2007
Пользователь №: 24

Спасибо сказали: 2 раз(а)




Репутация:   1  


Цитата(ViGOur @ 17.12.2007, 20:03) *
Хе-хе, забыл сказать, что нужно переопределить destroyed для потока и в нем вызывать deleteLater. :)

Интересно как это Вы собираетесь переопределить signal? Oo

Нужно просто по сигналу, который сигнализирует закрытие соединения, вызвать слот deleteLater() и всё.
Например, если в Вашем классе сервера при закрытии соединения выдаётся сигнал closed, то конструкция выглядит так:

connect(pServer, SIGNAL(closed()), SLOT(deleteLater()));
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 18.12.2007, 11:03
Сообщение #6


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Цитата(QCasper @ 18.12.2007, 10:47) *
Интересно как это Вы собираетесь переопределить signal? Oo
это было Copy-Paste, потому так и получилось. :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
QCasper
  опции профиля:
сообщение 18.12.2007, 11:29
Сообщение #7


Студент
*

Группа: Участник
Сообщений: 66
Регистрация: 26.11.2007
Пользователь №: 24

Спасибо сказали: 2 раз(а)




Репутация:   1  


Цитата(ViGOur @ 18.12.2007, 11:03) *
Цитата(QCasper @ 18.12.2007, 10:47) *
Интересно как это Вы собираетесь переопределить signal? Oo
это было Copy-Paste, потому так и получилось. :)


Что-то я не очень понимаю, если Вы хотите сказать, что имели ввиду SLOT destroyed, то хочу заметить, что ни у одного Qt класса (на момент версии 4.3.3) нет такого слота. По крайней мере по документации.

Сообщение отредактировал QCasper - 18.12.2007, 11:30
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 18.12.2007, 11:49
Сообщение #8


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


В данном случае это сигнал, я хотел сказать вообще, как решить проблему Sam'а, но так как я сделал Copy-Paste, то получилось немного не то. Ладно проехали...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Sam
  опции профиля:
сообщение 18.12.2007, 12:33
Сообщение #9


Студент
*

Группа: Новичок
Сообщений: 15
Регистрация: 28.11.2007
Пользователь №: 28

Спасибо сказали: 0 раз(а)




Репутация:   0  


Да ладно вам горячие финские парни, разобрался я! :)

Спасибо.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.3.2024, 15:09