我正在尝试使用集成到 Visual Studio 2010 中的 OpenMP 的多线程来制作快速密码生成器。
假设我有一个基本的字符串生成器,它可以从字符串中随机提取字符。
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 错误。
我只是在错误的工作中使用了错误的工具吗?