с потоком торможу поток (данные при этом по UDP продолжают лететь).
Чтобы корректно его вырубить, жду
while(!m_transmitTimer->isFinished())
{}
m_transmitTimer->deleteLater();
Но поток не останавливается, просто всё фризится и всё
Пробовал через disconnect отключиться от сигнала, но тоже не помогает
Что я упускаю?
а как вы его останавливаете?
У меня класс-наследник QThread, крутится while(isRunning && running) { } Методом этого класса stop() вызываю QThread::quit() потом running в false Обычно я делаю многопоточку путем moveToThread, но здесь задача простая, просто функцию в другом потоке крутит этот класс, поэтому наследника сделал Таких потоков создаю несколько, остальные созданные таким образом гасятся нормально, подозрение остаётся на readyRead, что она не даёт завершиться потоку
если вы в run не запускаете свой QEventLoop, то для чего вам вызов quit? и еще running это ваш флаг? он хотя бы volatile?
Может вам qt concurrent подойдёт?
Не знаю, что дешевле, вызвать статик метод или через std:: function/std::bind многократно вызывать Суть в том, что эта функция, которая в другом потоке постоянно вызывается, проверяет постоянно данные, которые нужно отправлять Отправка может происходить часто, десятками/сотнями миллисекунд интервал измеряется Поэтому так сделал Готов рассмотреть другие варианты, все мы учимся
Можно прикрутить конкурент и посмотреть насколько оно успевает у вас. Там несложно, но зато не надо будет искать гонки потом. Не уложитесь по таймингам, тогда уже что-то сложное городить
Обсуждают сегодня