C++で並列プログラミング

並列プログラミングライブラリ(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);
    };
}