並列プログラミングライブラリ(PPL)のうち、今回は簡単な並列forループであるTParallel.Forを使ってみます。
素数かどうか調べる関数
bool IsPrime(int N){ bool aPrime=true; for (int Test=2; Test < N-1; Test++) { if(N % Test == 0){ aPrime = false; break; } } return aPrime; }
普通のループ
int Max=50000; Tot=0; for (int I=1; I<=Max; I++) { if(IsPrime(I)){ Tot++; } }
TParallel.Forループ
void __fastcall TFormThreading::MyIteratorEvent(TObject *Sender,int AIndex) { if(IsPrime(AIndex)){ TInterlocked::Increment(Tot); }; }