Как использовать Shared-Variable
Я хочу узнать ваше мнение о том, как я кодировал свой QThread.
эта часть моего кода предназначена для управления ШИМ для светодиодного дисплея.
Цель моего QThread - работать как можно более плавно при изменении значения в QThread, иначе я могу наблюдать очень быстрый перерыв на светодиодном дисплее во время изменения значения, например, когда я использую QMutex.
это причина, по которой я выбрал способ SIGNAL / SLOT. Когда мне нужно изменить яркость, которая зависит от времени или значения сопротивления, я использую emit SIGNAL_FUNCTION (qint32 new_value)
Существует ли риск сбоя моего приложения с использованием моего метода? Есть ли другой способ более правильно обрабатывать такого рода процедуры?
Я прилагаю свой код ниже.
#include "luminosite.h"
LUMINOSITE::LUMINOSITE(QObject *parent, qint32 P_PIN_LUMINOSITE) :
QThread(parent)
{
PIN_LUMINOSITE = P_PIN_LUMINOSITE;
VALEUR = 1;
}
void LUMINOSITE::run()
{
qint32 TICK = 0;
while(true)
{
if (TICK == 0)
{
digitalWrite(PIN_LUMINOSITE, LOW);
}
else if (TICK == VALEUR)
{
digitalWrite(PIN_LUMINOSITE, HIGH);
}
TICK++;
if (TICK == 33)
{
TICK = 0;
}
delayMicroseconds(1);
}
}
void LUMINOSITE::CHANGEMENT_VALEUR(qint32 P_VALEUR) // SLOT
{
VALEUR = P_VALEUR;
}
1 ответ
Если ваш вопрос только "SIGNAL/SLOT, они потокобезопасны?", Прочитайте это: http://doc.qt.io/qt-5/threads-qobject.html
Это зависит только от выбранного вами типа подключения.
Вам нужно выбрать между Qt::QueuedConnection и Qt::BlockingQueuedConnection