这可能是一个非常简单的问题,但因为我从来没有使用过线程,所以在我认为最好是问而不是试图完全自己找到最佳解决方案。
我有一个for
运行数十亿次的巨大循环。在每次 on loop 运行时,index
程序根据 current 以数字的形式计算最终结果。我只对存储顶部result
(或顶部 x 结果)及其相应索引感兴趣。
我的问题很简单,在线程中运行这个循环的正确方法是什么,以便它使用所有可用的 CPU/内核。
int topResultIndex;
double topResult = 0;
for (i=1; i < 1000000000; ++i) {
double result = // some complicated calculation based on the current index
if (result > topResult) {
topResult = result;
topResultIndex = i;
}
}
每个指标的计算完全独立,不共享资源。topResultIndex
并且topResult
显然会被每个线程访问。
*更新:Giulio 和 rolfl 的解决方案都很好,也非常相似。只能接受其中一个作为我的答案。