gpt4 book ai didi

c++ - 随 secret 码生成器上的 OpenMP 多线程

转载 作者:行者123 更新时间:2023-11-28 07:50:34 24 4
gpt4 key购买 nike

我正在尝试使用多线程和集成到 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 错误。

我是不是用错了工具做错了事?

最佳答案

回答您的问题,并将@CrazyCasta 的评论转化为答案:

是的,你用错了工具做错了事

rand 不能像您希望的那样并行化,并且由于生成任何合理长度的密码已经非常快,因此很难看出您为什么要打扰。

然而,并行伪随机数生成器的主题很有趣,并且有很多关于它们的已发表作品,甚至还有一些关于 SO 的问题和很好的答案。我建议您将注意力集中在更多的学习上,并在您对它们有更多了解后返回到您的编程。

关于c++ - 随 secret 码生成器上的 OpenMP 多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13889065/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com