我有一个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
谢谢!
答案 0 :(得分:1)
QThread
run()
QWaitCondition
停止循环
for
周期中唤醒条件答案 1 :(得分:0)
把循环,文件读/写,'一些东西',线程中的批次。试图为每个循环断开一个函数调用是一个太多可避免的线程间通信。将文件规范等打包到myClass对象中,将其发送给线程并让它继续...