Qt官方assistant給的例子
class Worker : public QObject
{
Q_OBJECT
public slots:
void doWork(const QString ¶meter) {
QString result;
/* ... here is the expensive or blocking operation ... */
emit resultReady(result);
}
signals:
void resultReady(const QString &result);
};
class Controller : public QObject
{
Q_OBJECT
QThread workerThread;
public:
Controller() {
Worker *worker = new Worker;
worker->moveToThread(&workerThread);
connect(&workerThread, &QThread::finished, worker, &QObject::deleteLater);
connect(this, &Controller::operate, worker, &Worker::doWork);
connect(worker, &Worker::resultReady, this, &Controller::handleResults);
workerThread.start();
}
~Controller() {
workerThread.quit();
workerThread.wait();
}
public slots:
void handleResults(const QString &);
signals:
void operate(const QString &);
};
想問下,Worker*遷入子執行緒后,在解構式中能把Worker*指標資源正常釋放么?
uj5u.com熱心網友回復:
正常情況下會,因為解構式你會等執行緒運行完畢,而根據你建構式里的connect,完畢后worker會呼叫deleteLater()uj5u.com熱心網友回復:
會的,你可以在work中加一個解構式,看一下,執行到了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/263099.html
標籤:Qt
上一篇:發布需求:股票全自動交易系統,要求能掛鉤通達信macd,cjdx等指標,按日,120分鐘等周期自動交易,誰能做出程式嗎?
