Добрый день! Подскажите, не было ли ни у кого проблем

с QWaitCondition? Задача простая - есть объект наследуемый от QThread. Внутри run() запись в ком-порт и чтение.

while(true) {
...
emit ready();
m_mtx.lock();
m_condition.wait(&m_mtx);
m_mtx.unlock();
QThread::msleep(m_delay);
}

Данные передаются вызовом метода Write() из основного потока в функции кол-бэке, которая запускается по сигналу ready(). Содержимое метода write:

QMutexLocker locker(&m_mtx);
if(!isRunning()) {
start();
} else {
m_condition.wakeOne();
}

Иногда зависает вся эта конструкция. Опытным путём оказалось, что wakeOne() вызывается, а вот поток не просыпается. Объект существует в единственном экземпляре. Что можно попробовать? Вроде простейшая конструкция, взята из примера Qt, и такие баги, я аж опешил))

4 ответов

7 просмотров

QThread::msleep(m_delay); а это зачем?

Ilia-Zhitenev Автор вопроса
Michael Chambers
QThread::msleep(m_delay); а это зачем?

это для реализации задержки, чтоб цикл слишком быстро не крутился, иначе данные слишком часто в железку летят

Наверняка переопределив метод run() вы забыли запустить exec() https://doc.qt.io/qt-5/qthread.html#run

Ilia-Zhitenev Автор вопроса
BAHR
Наверняка переопределив метод run() вы забыли запу...

Вы уверены? Насколько я знаю это для сигналов-слотов, но у меня их нет в этом потоке. Проблема именно с WaitCondition которое подвисает через некоторое время работы. А при попытке вызвать exec() рабочий поток просто зависает

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

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

Подскажите, а есть vault lite или ченить такое?) А то нужен вольт для похода в вольт, но весит он ~500 мб) как-то многовато для парочки запросов ))
Alexandr Orloff
17
Всем привет, есть небольшая проблема Есть такой скрипт document.addEventListener('DOMContentLoaded', function () { const sliderTabs = document.querySelectorAll('.s...
A da
8
@go1337 @dblackCat Привет. Все ещё дрочусь с fastpanel. Добавил второй домен который должен смотреть в рут того же сайта, но так как это просто домен, а не сайт, я не могу ему...
Ross 🦴
9
До речі, в ево нема можливості чи якого розширення щоб з адмінки з телефона зайти і терміново щось в верстці поправити?
Женя
7
кто-нибудь пользуется тайм-трекерами во время работы? так много разных нагуглил, может есть что-то популярное
Lencore
8
Пацаны. Я разрабатываю софт для инвайтинга на телетон, и столкнулся с такой проблемой, в один из чатов не могу приглашать никого, не дает добавлять, в то же время через официа...
Kernel Panic
11
Скажите, а кому нужен Currency как отдельный плагин вместо полноценного ecommerce в OctoberCMS? Кто-то использует его уже или планирует в будущем? Может я что-то не понимаю?
Igor
13
Розмовами про Рево мені нагадали часи, коли шаблони правилися прямо в адмінці. Хто в курсі, чому відійшли від цієї практики, так блейд не працює? Доволі зручно ж було (інколи)
Женя
3
Всем добрый вечер, Рад оказаться в кругу единомышленников. Начинаю погружаться в мир .net веба. Зовут Ерасыл 🖖 У меня назрел вопрос: Какой процент проектов, прошедшие через в...
Ерасыл
6
Чому? Да тому що без GiT не уявляю нормального проекта а коли код в базі то то так собі
Dmytro Lukianenko
3
Карта сайта