(Qt6 - Advanced) 7. QFuture Iterator

Posted by : at

Category : Qt


#include <QCoreApplication>
#include <QtConcurrent>
#include <QFuture>
#include <QList>
#include <QFutureIterator>

int multiply(const int &value)
{
    qInfo() << "Called: " << value;
    int num = value * 10;
    return num;
}

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QList<int> list;
    for (int i = 0;i < 100;i++)
    {
        list.append(i);
    }

    //Do stuff async   -----------------------------------
    QFutureWatcher<int> watcher;
    QFuture<int> future = QtConcurrent::mapped(list,&multiply);
    watcher.setFuture(future);

    //Blocking style  ----------------------------------------
    watcher.waitForFinished();


    //Java style   ------------------------------------------
    QFutureIterator<int> iter(future);
    while(iter.hasNext())
    {
        qInfo() << "Java: " << iter.next();
    }

    //Index style (normal c++)   ----------------------------
    for(int i = 0; i < future.results().length(); i++)
    {
        qInfo() << "Index: " << future.resultAt(i);
    }

    //Qt style---------------------------------
    foreach(int i, future.results())
    {
        qInfo() << "Qt: " << i;
    }

    //STD --------------------
    QList<int> values = future.results();
    for(auto i = values.begin(); i < values.end(); i++)
    {
        qInfo() << "STD: " << *i;
    }

    qInfo() << "Done";

    return a.exec();
}

About Taehyung Kim

안녕하세요? 8년차 현업 C++ 개발자 김태형이라고 합니다. 😁 C/C++을 사랑하며 다양한 사람과의 협업을 즐깁니다. ☕ 꾸준한 자기개발을 미덕이라 생각하며 노력중이며, 제가 얻은 지식을 홈페이지에 정리 중입니다. 좀 더 상세한 제 이력서 혹은 Private 프로젝트 접근 권한을 원하신다면 메일주세요. 😎

Star
Useful Links