0

我知道对于 CPU 密集型任务,您通常需要每个核心 1 个线程,否则您可以开始为每个核心添加更多线程。但是每个线程的任务(或者它们是同一个)呢?

我试图弄清楚如何将一个大问题分成最佳数量的Runnables,以便我可以将它们提交给Executor. 我的理解是,然后您可以配置Executor将使用的线程数(因此不一定是 1 比 1)。

所以我的问题是:假设我发现对于给定的应用程序,我确定每个核心 5 个线程是最佳比率;但是我如何Runnables首先确定要创建的最佳任务数( )?

4

2 回答 2

0

你把它做成一个旋钮,你可以改变它,直到你满意为止。适用于您的工作站的可能不适用于部署服务器。这取决于。一只手握住旋钮,另一只手握着秒表,并对其进行基准测试,直到您对结果感到满意为止。

于 2012-06-29T18:22:21.823 回答
-1

你知道阿姆达尔定律吗?

使用此公式,您可以确定与单线程应用程序相比,多线程应用程序将获得的潜在加速

阿姆达尔定律

总结一下,你有以下公式:

加速= 1 / (1 - p) + (p / n)

在哪里

p是并行部分, 1 - p是顺序部分, n是处理器的数量。

如果您的应用程序由 60% 的并发代码和 40% 的顺序代码组成,您的并行部分将是 0.6,而顺序部分是 0.4。

希望这可以帮助你

于 2012-06-29T18:13:05.373 回答