我正在通过 QtConcurrent::mapped 处理一堆重数据(其中 1000 个或更多)
auto result = QtConcurrent::mapped(image_id, std::bind<std::pair<QString, QImage>>(&mainWindow::process_image_impl, this, ph::_1));
代替
void process_image_impl(int image_id)
{
//.......lots of codes
{
QMutexLocker locker(&mutex);
morphology.close(image, image); //I don't want to lock this operation
}
//lots of codes
}
我想做类似的事情
void process_image_impl(int image_id)
{
//.......lots of codes
morphology[thread_id].close(image, image); //I don't want to lock this operation
//lots of codes
}
在函数 process_image_impl 中,我调用了一个名为“morphology”的类,我不想在处理图像时锁定“morphology”类,但是如果我不锁定它可能会导致未定义的行为。而不是锁定过程中,我想把“morphology”类放在一个容器中,根据QThreadPool中的线程调用每个“morphology”,这可能吗?或者您有其他建议吗?谢谢