Re: прием udp в потоке
От: Zhendos  
Дата: 15.11.21 15:33
Оценка:
Здравствуйте, 00011011, Вы писали:

0>Сделал прием udp в отдельном потоке. Но стабильно ловится только первый пакет.

0>Дальше начинается странное — иногда, если походить в отладке, вновь приходим в слот приема. Если без отладки, то не приходит больше одного раза.

1. Вы используете "this" в connect. QThread тоже QObject,
и он имеет связанный с ним поток и этот поток это не он сам. А вот
"socket" создан в самом потоке, в результате не только сигналы
доставляются через очередь сообщения, а не прямым вызовом,
но и есть явная "data-race". Так как "onReceive" вызывается в другом потоке,
а обращается к сокету из потока Receiver.
Вообще наследование от QThread это плохой подход в современном Qt.
Все реализовано так, что можно обойтись без этого.

2. Нужно к другим сигналам подключиться, по крайней мере к тем что сообщают об изменении
состояния и ошибках: errorOccurred/stateChanged

3. Зачем вручную выделять память?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.