Название: Корректное завершение нескольких клиентских потоков Отправлено: Fregloin от Май 19, 2011, 17:39 Есть несколько потоков (Qt шных), в которых идет прием по клиентским сокетам.
по нажатию кнопки, нужно корректно завершить все потоки, предварительно закрыв соединение в этих потоках. Корректен ли такой подход, который привожу ниже: код потока клиента Код: void QMMNClientThread::run() Код: void CEC::startClient() После внесения этой коррективы вроде бага на наболюдаю. Подскажите с точки зрения Qt грамотно ли я прибиваю сокет/поток? Название: Re: Корректное завершение нескольких клиентских потоков Отправлено: Авварон от Май 19, 2011, 20:56 я не вижу дисконнект клиент
эмит - это макрос, к-ый ничего не делает, просто для красоты. следовательно, вы вызываете ф-ию напрямую и что-то мне подсказывает что не из того потока зачем тут вообще больше 1го потока? сокеты все из себя и так асинхронные Название: Re: Корректное завершение нескольких клиентских потоков Отправлено: Fregloin от Май 20, 2011, 12:45 вообще по плану будет 5 подключений к разным машинам, все одновременно будут получать данные с серверов. данные идут потоком, непрерывно каждые 250 мсек кадры по 4-8Кб. помимо того, в основном потоке еще идёт прорисовка в GraphicsScene около 1000 объектов + логика расчета состояний. поэтому резонно хотя бы чтение по сокетам перенести в одельные потоки. В целом пока этот механизм работает нормально.
Название: Re: Корректное завершение нескольких клиентских потоков Отправлено: Авварон от Май 20, 2011, 16:32 Данные приходят от сервера, попадают в буфер сокета, Qt кидает сигнал об этом. Вы копируете из буфера в свои структуры. Зачем тут больше 1го потока?
|