【问题标题】:QtConcurrent::blockingMapped calling function with more than 1 argumentQtConcurrent::blockingMapped 调用函数超过 1 个参数
【发布时间】:2015-04-16 17:55:54
【问题描述】:

我使用QtConcurrent::blockingMapped() 在多个线程的单个参数列表上执行函数。真的很棒!

但我想做同样的事情,调用需要多个参数的函数,即:

// prototype:

static void openAndProcess(QString FileName, QImage &image);

这是我的数据:

QList<QString> fileList;
QList<QImage> qImageList;

我想在我的openAndProcess() 函数上使用QLists 上面的两个函数执行QtConcurrent::blockingMapped()...

我该怎么做?

提前致谢!

【问题讨论】:

    标签: qt qt5 qtconcurrent


    【解决方案1】:

    创建一个带有指向数据的指针的 POD 结构。这是在 QtConcurrent 中不重新实现许多不好玩的事情的唯一方法。

    或者,考虑使用QList&lt;QPair&lt;QString, QImage&gt; &gt;,这实际上是一回事。

    【讨论】:

    • 好的,谢谢。但是如果我以前有 QImage 和 QString,那么创建包含这两种类型的结构的新实例意味着我需要将数据从 QImage 复制到我的新结构中。这是浪费处理器时间,不是吗?我需要以最佳方式做到这一点......
    • 啊,我的意思是指向您的数据的指针。指针的 POD 结构在开销上是微不足道的。仅供参考,QImage 和 QString 是隐式共享的,因此不会发生深拷贝,但我明白你的意思。
    • 我明白了,谢谢。我接受了你的回答,但很遗憾我不能投票,因为我的声誉很低。干杯!
    猜你喜欢
    • 2013-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-23
    • 1970-01-01
    • 1970-01-01
    • 2012-01-04
    • 2021-11-08
    相关资源
    最近更新 更多