Visual Studio 2010 に統合された OpenMP を使用したマルチスレッドを使用して、高速なパスワード ジェネレーターを作成しようとしています。
文字列から Char をランダムに取り出すこの基本的な文字列ジェネレーターがあるとします。
srand(time(0));
for (i = 0; i < length; ++i)
{
s=pwArr[rand()%(pwArr.size()-1)];
pw+=s;
}
return pw;
基本的な考え方は、OpenMP でマルチスレッド化を有効にして、次のように非常に高速なランダム文字検索を有効にすることです。
srand(time(0));
#pragma omp parallel for
for (i = 0; i < length; ++i)
{
s=pwArr[rand()%(pwArr.size()-1)];
pw+=s;
}
return pw;
ただし、これは各スレッドが同時にパスワードジェネレータの独自の個別の実装を行うだけであり、文字列で繰り返しが発生します。
出力例は次のようになります。
ndxP1k1kP1k
さらに、これはより大きな文字列でひどい結果をもたらします: Debug Assertation Failed エラー。
間違った仕事に間違ったツールを使用しているだけですか?