Название: Обработка данных в отдельном потоке Отправлено: Ground от Август 19, 2014, 07:17 Доброго времени суток!
Необходимо сделать UDP-сервер, который бы обрабатывал получаемые данные в отдельном потоке. Покурил я мануалы, не могу понять технологии работы с потоками в Qt 5. У меня есть мой класс Network, в нем я создаю QUdpSocket. Сигнал сокета readyRead() о получении новых данных я подключаю к функции в этом же классе. Как правильно перенести обработку полученных данных в отдельный поток? Раньше просто наследовались от QThread, сейчас, я как понимаю, нужно как-то сделать moveToThread? Название: Re: Обработка данных в отдельном потоке Отправлено: gil9red от Август 19, 2014, 07:51 Вот в доке пример работы с moveToThread (http://qt-project.org/doc/qt-5/qthread.html#details)
Название: Re: Обработка данных в отдельном потоке Отправлено: Ground от Август 19, 2014, 08:33 Вот в доке пример работы с moveToThread (http://qt-project.org/doc/qt-5/qthread.html#details) Примеры тестовые мне понятны. Дело в том, что в них рассматривается, как вынести одиночную тяжелую операцию в другой поток. После завершения операции, поток завершается. С сетью нюансы в другом - тяжелые операции будут выполняться регулярно, не запускать же каждый раз по потоку. Как быть в этом случае? Название: Re: Обработка данных в отдельном потоке Отправлено: Пантер от Август 19, 2014, 08:44 Создаешь класс, реализуешь в нем функционал, переносишь его в поток, общаешься с ним сигналами/слотами.
Название: Re: Обработка данных в отдельном потоке Отправлено: Bepec от Август 19, 2014, 11:42 3 варианта:
1) создаёшь поток, который создаёт UdpSocket и сам с ним общается, операции выполняет и так далее. 2) создаёшь поток - Worker, который имеет доступ к стеку данных. В основном потоке добавляешь в стек данные, доп поток выполняет над ними операции на следующей итерации. 3) на каждую операцию создаёшь поток. |