假设我有以下代码:
char[5][5] array;
for(int i =0; i < 5; ++i)
{
for(int j = 0; j < 5; ++i)
{
array[i][j] = //random char;
}
}
在单独的线程中初始化此数组中的每一行是否有好处?
想象一下,我们有一个 10 x 10 的数组,而不是 5 x 5 的数组? n×n?
此外,这只在应用程序启动期间完成一次。
最佳答案
你在开玩笑吧?
如果不是:答案肯定是否定的!!!
将足够的同步放在一起以通过消息队列分派(dispatch)工作,以及知道所有线程已完成其行且数组已准备就绪,您会产生大量开销。这将远远超过一个 CPU 核心用已知值填充 25 个字节所花费的时间。因此,对于几乎任何像这样的简单初始化,您都不想使用线程。
另请记住,线程在单核机器上提供并发性,但不提供加速。如果你有一个必须同步完成的操作——比如数组初始化——那么你只能通过添加一个线程数直到可用的 CPU 内核数来获得值(value)。 理论上。
所以如果您在多核系统上并且如果您在每个单元格中放入的内容需要很长时间才能计算...那么当然,它可能值得利用某种并行性。所以我喜欢 genpfault 的建议:为多核系统编写多线程并将其作为教育练习计时,只是为了了解何时会发生利益交叉......
关于c++ - 多维数组初始化: Any benefit from Threading?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2932753/