Всем привет Подключаюсь в другом потоке к сигналу QUdpSocket::readyRead() Для завершения работы

с потоком торможу поток (данные при этом по UDP продолжают лететь).
Чтобы корректно его вырубить, жду
while(!m_transmitTimer->isFinished())
{}
m_transmitTimer->deleteLater();
Но поток не останавливается, просто всё фризится и всё
Пробовал через disconnect отключиться от сигнала, но тоже не помогает
Что я упускаю?

6 ответов

5 просмотров

а как вы его останавливаете?

Александр-Серый Автор вопроса

У меня класс-наследник QThread, крутится while(isRunning && running) { } Методом этого класса stop() вызываю QThread::quit() потом running в false Обычно я делаю многопоточку путем moveToThread, но здесь задача простая, просто функцию в другом потоке крутит этот класс, поэтому наследника сделал Таких потоков создаю несколько, остальные созданные таким образом гасятся нормально, подозрение остаётся на readyRead, что она не даёт завершиться потоку

Александр Серый
У меня класс-наследник QThread, крутится while(isR...

если вы в run не запускаете свой QEventLoop, то для чего вам вызов quit? и еще running это ваш флаг? он хотя бы volatile?

Александр-Серый Автор вопроса
Michael Chambers
Может вам qt concurrent подойдёт?

Не знаю, что дешевле, вызвать статик метод или через std:: function/std::bind многократно вызывать Суть в том, что эта функция, которая в другом потоке постоянно вызывается, проверяет постоянно данные, которые нужно отправлять Отправка может происходить часто, десятками/сотнями миллисекунд интервал измеряется Поэтому так сделал Готов рассмотреть другие варианты, все мы учимся

Александр Серый
Не знаю, что дешевле, вызвать статик метод или чер...

Можно прикрутить конкурент и посмотреть насколько оно успевает у вас. Там несложно, но зато не надо будет искать гонки потом. Не уложитесь по таймингам, тогда уже что-то сложное городить

Похожие вопросы

Обсуждают сегодня

вопрос: кто как решает вопрос с динамической подгрузкой скриптов для отдельных страниц с включенным turbo router?
Sergei Toroptsev
25
Почему Telegram пишет, что объект media не найден, хотя на самом деле я его передаю? Делаю на urllib, без зависимостей, так надо. Вызываю метод sendMediaGroup с таким JSON: ...
Alexey S
1
Сonst magicTgHTML = (text, entities) => { let processedText = text; let offsetShift = 0; entities.forEach(entity => { const { offset, length, type, url, ...
Андрей
1
Чет мне ссыкотно опять Rainlab.User в проект ставить. Кто знает, опять наотъебись все сделали или после обнов пользоваться можно?
Black Cat
10
коллеги привет. уже второй день бьемся об заклад с одной ошибкой, может вы сталкивались с таки странным поведением? есть тестовый сервер, на который паблишим релизную версию W...
Magzhan
11
это группа токсиков или тех кто помогает?
Ибрагим
9
В смысле более затратная? Общая стоимость владения лошадью меньше, чем автомобиля. В среднем.
Sergej R
10
Кстати, раз про скачивание файлов разговор зашел) Сделал бота для себя (транскрибирующего и суммаризирующего встречи) но не ожидал что за 2 месяца 10к пользователей набежит😅...
Andrey Obolenskiy
8
ребят, привет есть ли возможность мигрировать Policies + Auth Methods из нескольких Vault в один? пытаюсь сократить Vault кластера, немного не удобно что для каждой тестовой ...
azadevlab
2
Всем привет. Кто подскажет, как сделать авто обновление стороннего модуля при запуске контейнера. Мб есть команда при запуске контенера или в докер файле нужно приписать настр...
Trum_t Malyuzhenets
1
Карта сайта