2

我有一个 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

谢谢!

4

2 回答 2

1
于 2012-02-14T22:02:18.167 回答
0

将循环,文件读/写,“一些东西”,很多东西放在线程中。试图在每个循环中线程化一个函数调用,嗯,太多可避免的线程间通信。将文件规范等打包到一个 myClass 对象中,向线程发出信号,然后放手...

于 2012-02-14T22:03:46.747 回答