在Qt中线程化一个函数

时间:2012-02-14 21:32:42

标签: c++ multithreading qt qtconcurrent

我有一个for循环,它将运行固定的次数,通常在100-300范围内,具体取决于输入。这个循环的每次迭代都调用一个我想要线程化的函数。线程从输入文件中获取数据的功能,用它做一些事情,然后以新格式将其写入输出文件......

以下是一些高级代码:

void myClass::processFile()
{
    ...

    for (int index = 0; index < 200; index++)
    {
        //Function or loop to thread
        generateData(someMapOfMaps1[index], someMapOfMaps2[index]);
    }
}

然后在 相同的 类中的generateData内:

void myClass::generateData(QMap<float, foo*> mapA, QMap<float, foo*> mapB)
{
    //read in data from a file
    //process data
    //write data to a different file
}

我玩QtConcurrent::run()QtConcurrent::mapped(),但运气不好。我相信mapped()本来是一个很好的选择,但我的功能需要2张地图而不只是一张。

我在幻灯片25周围使用它作为资源:http://www.develer.com/promo/workshop/enhancing_with_multi_threading.pdf

谢谢!

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

把循环,文件读/写,'一些东西',线程中的批次。试图为每个循环断开一个函数调用是一个太多可避免的线程间通信。将文件规范等打包到myClass对象中,将其发送给线程并让它继续...