C++ QThreads的向量
为了优化性能和防止GUI冻结,我正在尝试对图像录制应用程序进行多线程处理。 我试图创建CaptUratRead的向量(我的类扩展了QThread),但它没有编译 这是我的密码:C++ QThreads的向量,c++,qt,qthread,C++,Qt,Qthread,为了优化性能和防止GUI冻结,我正在尝试对图像录制应用程序进行多线程处理。 我试图创建CaptUratRead的向量(我的类扩展了QThread),但它没有编译 这是我的密码: vector<CaptureThread> v_ct_Threads(i_SelectedCameras); for(int i = 0; i < i_SelectedCameras; i++) { v_ct_Threads[i] = CaptureThread(i, qsb_Duration
vector<CaptureThread> v_ct_Threads(i_SelectedCameras);
for(int i = 0; i < i_SelectedCameras; i++) {
v_ct_Threads[i] = CaptureThread(i, qsb_Duration->value());
v_ct_Threads[i].start();
}
for(int i = 0; i < i_SelectedCameras; i++) {
v_ct_Threads[i].wait();
}
< P>我猜这是一个愚蠢的错误,但我是C++和QT初学者…< P> CopTrItTrx的复制构造函数被删除,可能是因为不能复制Q线程。p> 您可以将CAPT的指针插入线程向量
vector<std::unique_ptr<CaptureThread>> v_ct_Threads(i_SelectedCameras);
for(int i = 0; i < i_SelectedCameras; i++) {
v_ct_Threads[i] = std::make_unique<CaptureThread>(i, qsb_Duration->value());
v_ct_Threads[i]->start();
}
for(int i = 0; i < i_SelectedCameras; i++) {
v_ct_Threads[i]->wait();
}
vector v_ct_线程(i_SelectedCameras);
对于(int i=0;ivalue());
v_ct_线程[i]->start();
}
对于(int i=0;iwait();
}
CAPTURAREAD的复制构造函数被删除,可能是因为无法复制QThread
您可以将CAPT的指针插入线程向量
vector<std::unique_ptr<CaptureThread>> v_ct_Threads(i_SelectedCameras);
for(int i = 0; i < i_SelectedCameras; i++) {
v_ct_Threads[i] = std::make_unique<CaptureThread>(i, qsb_Duration->value());
v_ct_Threads[i]->start();
}
for(int i = 0; i < i_SelectedCameras; i++) {
v_ct_Threads[i]->wait();
}
vector v_ct_线程(i_SelectedCameras);
对于(int i=0;ivalue());
v_ct_线程[i]->start();
}
对于(int i=0;iwait();
}
您不能复制线程。也许emplace\u back
可以帮助您可能只需要一个QThreadPool。您不能复制线程。也许<代码> ePosithBuffe>代码可以帮助您只需要一个QuthCub。我更新到C++ 14,您的解决方案似乎起作用了。谢谢。@BlackSilver-55std::make_unique
是c++14的一部分。有关它的更多信息,请参阅,如何解决c++11中缺少它的问题以及如何实现您自己的版本。在c++11中,您可以使用:v_-ct_-Threads[i]=std::unique_-ptr(新的capturatRead(i,qsb_-Duration->value())代码>我更新到C++ 14,你的解决方案似乎起作用了。谢谢。@BlackSilver-55std::make_unique
是c++14的一部分。有关它的更多信息,请参阅,如何解决c++11中缺少它的问题以及如何实现您自己的版本。在c++11中,您可以使用:v_-ct_-Threads[i]=std::unique_-ptr(新的capturatRead(i,qsb_-Duration->value())代码>