Обрыв соединения QTcpSocket |
Здравствуйте, гость ( Вход | Регистрация )
Обрыв соединения QTcpSocket |
OrSOn |
24.2.2010, 16:10
Сообщение
#41
|
Студент Группа: Участник Сообщений: 46 Регистрация: 8.12.2009 Пользователь №: 1289 Спасибо сказали: 0 раз(а) Репутация: 0 |
А такой вопрос еще... А можно ли рассматривать как вариант такой подход:
Сокеты создаются по-прежнему в главном потоке, но не имеют родителя. А когда нам надо отдать сокет на обработку, мы ему задаем moveToThread() в нужный поток, а затем также отправляем его в главный поток? По-идее, должно сработать, но что-то я не уверен в правильности такой работы. Подскажите плиз, есть шанс на успех или лучше так не делать? |
|
|
SABROG |
25.2.2010, 2:43
Сообщение
#42
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
а затем также отправляем его в главный поток? Поместив однажды объект в другой поток ты его уже обратно не сможешь вернуть в первоначальный. Сокеты создаются по-прежнему в главном потоке, но не имеют родителя. Сокеты возвращенные из метода QTcpServer::nextPendingConnection() являются детьми QTcpServer'a, стало быть и родитель у них есть. |
|
|
OrSOn |
25.2.2010, 9:47
Сообщение
#43
|
Студент Группа: Участник Сообщений: 46 Регистрация: 8.12.2009 Пользователь №: 1289 Спасибо сказали: 0 раз(а) Репутация: 0 |
А почему это я не смогу вернуть их в главный поток? А насчет родителя - всегда можно сделать setParent().
Попробовал только что, все работает вроде. Но вопрос остается открытым, могут ли быть какие-то проблемы в этой работе? Все же, я очень сомневаюсь, что разработчики Qt предусматривали использование moveToThread() для постоянной переброски объекта между потоками.. Сообщение отредактировал OrSOn - 25.2.2010, 11:49 |
|
|
BRE |
25.2.2010, 12:14
Сообщение
#44
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
Пока я вижу один момент с перетягиванием объектов между потоками.
Qt на основании информации о расположении объекта принимает решение о том, какой тип подключения использовать при connect. Если при перемещении объекта разрывать все коннекты, а при назначении в новый поток подключать их вновь, то возможно все будет работать. Попробуй поэкспериментировать с этим. |
|
|
OrSOn |
25.2.2010, 12:44
Сообщение
#45
|
Студент Группа: Участник Сообщений: 46 Регистрация: 8.12.2009 Пользователь №: 1289 Спасибо сказали: 0 раз(а) Репутация: 0 |
Увы, при перемещении я не могу рвать коннект, в том и суть, что надо передавать подключенным) Сейчас так и сделал, пока все работает, ошибок вызвать не получилось еще... Может и прокатит..
|
|
|
Текстовая версия | Сейчас: 4.12.2024, 12:45 |