Есть некий наследник от QThread...
class BillAcceptorNew : public QThread
{
Q_OBJECT
public:
BillAcceptorNew();
bool CCNet_init(const QString &com_name, bool enable);
void CMD_RESET();
void CMD_WORK();
int CMD_GET_STATUS();
static void msleep(int ms)
{
QThread::msleep(ms);
}
signals:
void signal_donominal(int cc_poll);
void CCNet_status_casete();
private slots:
void slot_read_sts(int sts,const QString &coment);
void run();
public slots:
void poll_timer_off();
....
из главного потока я вызываю CMD_WORK();
void BillAcceptorNew::CMD_WORK()
{
if(Debuger) qDebug() << "start CMD_WORK";
//Включаем купюрник на прием денег
CMD_ANABLE();
stoped = false;
poll_timer->start(120);
}
причем имеется соединение...
connect(poll_timer, SIGNAL(timeout()), this, SLOT(run()));
сам run() делает следующее
void BillAcceptorNew::run()
{
qDebug() << "==> send_poll_info";
CCNet_ack(false);
this->msleep(20);
CCNet_poll(true);
QCoreApplication::processEvents();
}
то есть отправляет запрос и считывает ответ в/из купюраприемника...
..............................................................................................
далее делаю так отключение
void BillAcceptorNew::poll_timer_off()
{
poll_timer->stop();
stoped = true;
QThread::terminate();
//Отключаем купюрник
CMD_DISABLE();
}
так вот все работает нормально...
но процесс csrss который в винде связан с потоками иногда доходит до 30% и главный поток начинает подтармаживать...
так как я первый раз имею дело с потоками объясните как провести оптимизацию??
до этого делал так...
void run()
{
while(1==1)
{
PollingLoop();//
QTest::qSleep(200);
QCoreApplication::processEvents();
}
}
при этом объекты главного окна совсем зависали(основной поток тормознул???)... а второй поток во всю колбасился...
что посоветуете господа..??