在工作线程中,我可以将数据对象移动到主线程以避免数据复制

时间:2019-05-01 23:39:43

标签: qthread

在线程之间传递数据(自定义)的一种常见方法是在线程之间发送数据作为信号/插槽的参数。这导致数据复制。

我想知道是否可以在工作线程完成之前将数据移回主线程,并仅将指针传递到信号/插槽中的数据对象,以避免数据复制?像下面这样。无需复制数据就能正常工作吗?

在工作线程中:

workerStart()
{
    MyData* data=new MyData();
    ...
    data->moveToThread(MainThread); //data will be deleted as thread function finish if not move to main thread?
    Q_EMIT ImDone(data);
}

在连接到Worker的ImDone信号的主线程插槽中:

WorkerDone(MyData* data)
{
    // use data via pointer
}

0 个答案:

没有答案