入力に応じて、通常は 100 ~ 300 の範囲で一定回数実行される for ループがあります。このループを繰り返すたびに、スレッド化したい関数が呼び出されます。スレッド化する関数は、入力ファイルからデータを取得し、それを処理してから、新しい形式で出力ファイルに書き出します...
ここにいくつかの高レベルのコードがあります:
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()
andで遊んでみましQtConcurrent::mapped()
たが、あまり運がありませんでした。素晴らしい選択だったと思いますが、私mapped()
の関数は 1 つではなく 2 つのマップを使用します。
スライド 25 あたりでこれをリソースとして使用していました: http://www.develer.com/promo/workshop/enhancing_with_multi_threading.pdf
ありがとう!