gpt4 book ai didi

multithreading - 配置 Fork 加入线程池

转载 作者:行者123 更新时间:2023-12-05 00:18:50 24 4
gpt4 key购买 nike

我有一个关于使用 fork join 线程池的简单问题。这是我正在使用的一个简短示例:

  executor = "fork-join-executor"
# Configuration for the fork join pool
fork-join-executor {
# Min number of threads to cap factor-based parallelism number to
parallelism-min = 24
# Parallelism (threads) ... ceil(available processors * factor)
parallelism-factor = 4.0
# Max number of threads to cap factor-based parallelism number to
parallelism-max = 48
}

我不确定的是,在这种情况下将创建多少个线程?我在 2 核机器上运行,所以每个核有 24 个线程,最多 48 个线程?

将并行因子设置为 4.0,可以并行运行的线程数将是 8。那么,设置最小值和最大值(我的情况是 24 和 48)需要什么?

最佳答案

让我们从解释 ForkJoinPool 中的并行性开始作品。线程数由单个(构造函数)参数控制 parallelism (默认内核数)。 ForkJoinPool尝试最多保留 parallelism运行线程。但是如果其中一些线程被阻塞,它可以决定产生更多线程。例如。如果您有太多等待加入的 fork 任务,除非您添加新线程,否则您的计算将被阻塞;等待线程处于事件状态但未运行(因为它们在等待)。更多解释here .

您问题中的调度程序配置控制了 parallelism 的值参数将设置为。它设置为可用处理器 * parallelism-factor但至少 parallelism-min最多 parallelism-max .查看更多信息 herehere .

How many threads will be created in this case?



并行度应该是 2 cores * 4 -> 8 threads .所以运行线程的数量应该是8个,但是总共创建的线程数量可能会更多。

What is the need for setting the min and max values which is my case is 24 and 48



我认为只有在您部署在具有不同内核数的机器上的情况下。

关于multithreading - 配置 Fork 加入线程池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37133683/

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