Как использовать 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

Другие вопросы по тегам