Thank you! I was using wrong keywords for searching. Qt word is 'conrurrent', not 'parallel'.
For now I implemented QtConcurrent::run though it's not the approach with the best performance. The strange part is that while concurrent version is somewhat faster than regular version in release build, in debug build it is many times slower. I was able to solve the problem only in this way:
#ifdef _DEBUG
for (int i = 0; i < Simulation->CompanyVector.size(); i++)
if (!Simulation->CompanyVector[i]->IsBankrupt)
MakeDecisionsForCompany(date, Simulation->CompanyVector[i]);
#else
vector<QFuture<void>> futureVector;
for (int i = 0; i < Simulation->CompanyVector.size(); i++)
if (!Simulation->CompanyVector[i]->IsBankrupt)
futureVector.push_back(QtConcurrent::run(
this,
&CArtificialIntelligence::MakeDecisionsForCompany,
date,
Simulation->CompanyVector[i]));
for (int i = 0; i < futureVector.size(); i++)
futureVector[i].waitForFinished();
#endif
#ifdef _DEBUG
for (int i = 0; i < Simulation->CompanyVector.size(); i++)
if (!Simulation->CompanyVector[i]->IsBankrupt)
MakeDecisionsForCompany(date, Simulation->CompanyVector[i]);
#else
vector<QFuture<void>> futureVector;
for (int i = 0; i < Simulation->CompanyVector.size(); i++)
if (!Simulation->CompanyVector[i]->IsBankrupt)
futureVector.push_back(QtConcurrent::run(
this,
&CArtificialIntelligence::MakeDecisionsForCompany,
date,
Simulation->CompanyVector[i]));
for (int i = 0; i < futureVector.size(); i++)
futureVector[i].waitForFinished();
#endif
To copy to clipboard, switch view to plain text mode
Bookmarks