QThreads 向量
Vector of QThreads
我正在尝试对我的图像记录应用程序进行多线程处理,以优化性能并防止 GUI 冻结。
我试图创建一个 CaptureThread 向量(我的 class 扩展了 QThread)但它没有编译...
这是我的代码:
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();
}
错误:
use of deleted function ‘CaptureThread& CaptureThread::operator=(CaptureThread&&)’
v_ct_Threads[i] = CaptureThread(i, qsb_Duration->value());
我想这是一个愚蠢的错误,但我是 C++ 和 Qt 的初学者...
删除了CaptureThread的拷贝构造函数,可能是因为QThread无法拷贝。
您可以将 CaptureThreads 的指针放入线程向量中。
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();
}
我正在尝试对我的图像记录应用程序进行多线程处理,以优化性能并防止 GUI 冻结。 我试图创建一个 CaptureThread 向量(我的 class 扩展了 QThread)但它没有编译...
这是我的代码:
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();
}
错误:
use of deleted function ‘CaptureThread& CaptureThread::operator=(CaptureThread&&)’
v_ct_Threads[i] = CaptureThread(i, qsb_Duration->value());
我想这是一个愚蠢的错误,但我是 C++ 和 Qt 的初学者...
删除了CaptureThread的拷贝构造函数,可能是因为QThread无法拷贝。
您可以将 CaptureThreads 的指针放入线程向量中。
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();
}