在线程之间传递数据(自定义)的一种常见方法是在线程之间发送数据作为信号/插槽的参数。这导致数据复制。
我想知道是否可以在工作线程完成之前将数据移回主线程,并仅将指针传递到信号/插槽中的数据对象,以避免数据复制?像下面这样。无需复制数据就能正常工作吗?
在工作线程中:
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
}