【问题标题】:Use QtConcurrent::map as a parallel for loop使用 QtConcurrent::map 作为并行 for 循环
【发布时间】:2017-04-02 19:15:25
【问题描述】:

我想要一个与 Qt 并行执行的 for 循环,我遇到了QtConcurrent::map。我当前的代码如下所示:

QList<int> list;
for(int i=0;i<100;i++) list.append(i);
auto future=QtConcurrent::map(list,[=](const int &i) {
    // do stuff in parallel
});

QList 看起来像是在浪费空间(在代码行和内存中)。是否有一个(伪)迭代器只在 2 个数字之间计数? Qt 中有更智能的解决方案吗?

【问题讨论】:

    标签: c++ qt concurrency


    【解决方案1】:

    你可以试试 QtConcurrent::run 代替:

    for (int i = 0; i < 100; i++) {
      QtConcurrent::run([=] {
        // do stuff in parallel
      });
    }
    

    【讨论】:

    • 这可行,但我会失去跟踪所有元素进度的单个 QFuture
    猜你喜欢
    • 1970-01-01
    • 2019-09-05
    • 2017-04-18
    • 2016-12-30
    • 1970-01-01
    • 2020-04-09
    • 2012-12-09
    • 2019-03-20
    • 1970-01-01
    相关资源
    最近更新 更多