gpt4 book ai didi

multithreading - 如何优化每核心数的线程数

转载 作者:行者123 更新时间:2023-12-04 06:37:10 25 4
gpt4 key购买 nike

我试图更好地了解应该在 n 个内核上运行多少个线程。我知道这是一个复杂的问题,答案取决于许多因素,例如有多少共享状态,以及每个线程做了多少 sleep 和等待资源。

为了简化事情,假设我们有 2 个内核和一个进程,可以将其工作划分为没有共享状态的线程。假设每个线程只是在计算后执行计算,没有 sleep 也没有等待资源。在这种情况下,理想的线程数是 2 吗?

让我们把事情复杂化一点,说线程必须做某种磁盘 I/O。这如何改变我们的答案?我认为在这种情况下我们可以有 2 个以上的内核。

或者假设他们不做任何 sleep 或等待资源,而是有一些他们都可以访问的内存需要同步。这如何改变我们的答案?我认为在这种情况下,我们实际上可能更喜欢 1 个线程而不是 2 个,这取决于需要多少同步。

最佳答案

在一般情况下,这是一个很难回答的问题。这实际上取决于案件的更多细节。要记住的是,进行上下文切换是有成本的——如果你只做计算,那么在一个内核上运行 2 个线程是很浪费的(因为你不会真正获得任何东西——只会在上下文切换中丢失)。另一方面,如果您正在等待资源并且同时可以继续进行其他计算,那么最好让线程等待这些资源,以免整个执行滞后。

关于multithreading - 如何优化每核心数的线程数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15190249/

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