DSt*_*ens 1 c++ qt ownership-semantics qthread
在QThread 类的文档中,一个示例设置的工作方式如下:
public:
Controller() {
Worker *worker = new Worker;
worker->moveToThread(&workerThread);
//some connects to thread and worker
workerThread.start();
}
~Controller() {
workerThread.quit();
workerThread.wait();
}
Run Code Online (Sandbox Code Playgroud)
Qt 是否使用moveToThread(...)此处的函数实现了实际的移动语义?即线程是否会在完成后重新分配 Worker 对象,因为分配的对象永远不会Worker*在Controller()任何地方显式删除?
小智 5
moveToThread 不会转让所有权。
在链接的示例中,此行将确保在线程完成后删除工作线程:
connect(&workerThread, &QThread::finished, worker, &QObject::deleteLater);
Run Code Online (Sandbox Code Playgroud)