【问题标题】:How to use a Shared-Variable如何使用共享变量
【发布时间】:2018-03-23 07:11:34
【问题描述】:

我想知道您对我如何编写 QThread 的看法。

我的这部分代码用于处理 LED 显示屏的 PWM。

我的 QThread 的目的是在更改 QThread 中的值时尽可能顺利地工作,否则我可以在 LED 显示屏上看到值更改期间非常快的中断,例如当我使用 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;
}

【问题讨论】:

    标签: multithreading qt qthread shared-variable


    【解决方案1】:

    如果您的问题只是“信号/插槽它们是线程安全的吗?”,请阅读:http://doc.qt.io/qt-5/threads-qobject.html#signals-and-slots-across-threads

    这仅取决于您选择的连接类型。

    您需要在 Qt::QueuedConnection 和 Qt::BlockingQueuedConnection 之间进行选择

    【讨论】:

      猜你喜欢
      • 2014-04-20
      • 2016-06-24
      • 2012-01-21
      • 1970-01-01
      • 1970-01-01
      • 2022-08-14
      • 2010-10-11
      • 2011-02-27
      • 2019-11-12
      相关资源
      最近更新 更多