我想知道您对我如何编码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;
}
答案 0 :(得分:0)
如果你的问题只是" SIGNAL / SLOT是线程安全吗?",请阅读:http://doc.qt.io/qt-5/threads-qobject.html#signals-and-slots-across-threads
它仅取决于您选择的连接类型。
您需要在Qt :: QueuedConnection和Qt :: BlockingQueuedConnection之间进行选择