123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- #include "OneThread.h"
- #include <QDebug>
- #include <QCoreApplication>
- OneThread::OneThread(QThread* thread, QObject* parent) : QObject(parent), m_thread(thread)
- {
-
- this->moveToThread(m_thread);
-
- connect(this, &OneThread::signal_runTask, this, &OneThread::do_runTask,Qt::QueuedConnection);
-
- qRegisterMetaType<std::function<int(void)>>("std::function<int(void)>");
- qRegisterMetaType<std::function<void(void)> >("std::function<void(void)>");
-
- connect(this, &OneThread::signal_runTask, this, &OneThread::do_runTask);
- connect(this, &OneThread::signal_runTaskRunOne, this, &OneThread::do_runTaskRunOne);
- }
- OneThread::OneThread(QObject* parent) : QObject(parent)
- {
- m_thread = new QThread();
-
- this->moveToThread(m_thread);
-
- connect(this, &OneThread::signal_runTask, this, &OneThread::do_runTask,Qt::QueuedConnection);
-
- qRegisterMetaType<std::function<int(void)>>("std::function<int(void)>");
- qRegisterMetaType<std::function<void(void)> >("std::function<void(void)>");
-
- connect(this, &OneThread::signal_runTask, this, &OneThread::do_runTask);
- connect(this, &OneThread::signal_runTaskRunOne, this, &OneThread::do_runTaskRunOne);
- }
- OneThread::~OneThread()
- {
- if(m_thread != nullptr)
- {
- m_thread->quit();
- m_thread->wait();
-
- m_thread = nullptr;
- }
- }
- void OneThread::do_runTask(std::function<void(void)> func)
- {
- qDebug() << "----- do_runTask , Thread ID: " << QThread::currentThreadId();
- m_threadRunning = true;
- while(m_threadRunning)
- {
- func();
-
- QCoreApplication::processEvents();
-
- QThread::usleep(100);
- }
- qDebug() << "----- do_runTask end -----";
- }
- void OneThread::do_runTaskRunOne(std::function<void(void)> func)
- {
- func();
- }
|