【发布时间】:2017-06-05 23:23:45
【问题描述】:
我想多线程一个“蛮力”算法。
我有一个函数bool check(const char *s, size_t n),它检查大小为n 的字符串s 是否是密码。
对于我的字母表可能的所有字符串组合(字母表中大约 90 个字符)调用此函数。
我可以在一个线程中完成,但现在我想多线程。 我还希望我的线程每个都有几乎相同的工作量我不希望一个线程必须测试 1B 组合而另一个只测试 1k)。
我想将负载分成“批次”组合。每个批次都有一个start 索引和一个stop 索引,因此拥有该批次的线程必须测试start 和stop 之间的所有组合。
我所说的组合索引是它的字典索引,例如字母表 [A, B, C]:
index combination
1 A
2 B
3 C
4 AA
5 AB
6 AC
7 BA
8 BB
... ...
例如,分配有start=4和stop=7的批处理的线程将测试AA, AB, AC, BA的组合。
如何轻松地为线程中的批次生成组合?优先考虑的是它要快,因为程序的重点是暴力破解。
还有另一种快速的方法来在线程之间拆分工作吗?
【问题讨论】:
标签: c performance combinations