gpt4 book ai didi

c# - C#中的多线程CPU使用率

转载 作者:可可西里 更新时间:2023-11-01 07:47:47 25 4
gpt4 key购买 nike

我的程序使用预定数量的线程,每个线程独立工作。我使用 i7-2600 CPU,但我关闭了超线程模块,因此它在 4 个内核上运行 4 个线程。当我用 1 个线程运行程序时,CPU 使用率为 25%,这是完美的,因为 1 个线程已被完全使用,但当我运行 4 或 3 个线程时,我只得到 60% 的 CPU,为什么?

就像我之前提到的那样,线程是完全独立的(没有锁也没有争用),当我用 1 个线程运行程序 4 次时,我得到 100% 的 CPU 使用率(即当它的 4 个进程每个进程有 1 个线程时我得到了正确的 CPU 使用率)

有什么想法吗?

更多信息:

  1. 在处理所有需要的数据时,我没有使用 I/O 加载到内存中,每个线程在处理之前加载自己的数据。
  2. 我确实从数据库加载数据(使用 oleDb),但我描述的问题发生在加载之后,同时所有线程都在处理(未完成加载)。
  3. 数字是:
    • 2 个线程约占 40%,而不是 50 个(每个线程 85%)。
    • 3 个线程约占 50%,而不是 75 个(每个线程 65%)。
    • 4 个线程约占 60%,而不是 100 个(每个线程 60%)。
  4. 我使用带 16GB 内存的 i7 2600,但该进程的内存使用量与此相去甚远。
  5. 我运行了 Windows 性能监视器来寻找没有争用的问题。

最佳答案

您可以尝试将您的程序从工作站模式转移到服务器垃圾收集模式。目前您可能只使用一个垃圾收集线程。
设置说明 here .
看这个thread以获取解释/更多详细信息。
不要期望更改后 100% 的 CPU 负载,但您会接近 100% 并增加它的速度。

关于c# - C#中的多线程CPU使用率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10292807/

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