【发布时间】:2012-11-13 04:27:07
【问题描述】:
我有一个分配给核心 #7 的 .NET 线程。线程函数每 300ms 触发一次。最初执行一个调用大约需要 20-30 毫秒。但是这个时间会逐渐增加,经过大约 2,52,000 次调用后会超过 150 毫秒。
我还注意到核心#7 的使用率从 10% 开始。到线程函数的调用次数达到 2,52,000 核心 #7 的处理器使用率大约为 60%。当我停止触发线程函数时,处理器使用率变为 0%。但是当我再次开始触发时,核心使用率从 60%(不是从 0%)开始,然后逐渐增加。
我还注意到应用程序没有内存泄漏。
在我的线程函数中,我将两个字典的元素组合在一起,并将其添加到 foreach 循环中的另一个字典中。字典中的元素数将始终为 45。
我希望这个应用程序 24/7 全天候运行。请告诉我一些使该处理器使用率保持不变的提示。
【问题讨论】:
-
您说,“字典中的元素数将始终为 45。”这是三个字典中每个元素的数量吗?你确定没有一本字典在增长吗?在我看来,这听起来像是一个使用未正确实现
GetHashCode的自定义键类型的字典。 -
谢谢 Jim Mischel,不。组合字典的最大计数为 45。一旦达到 45,它将被清除。另外两个字典的最大计数永远不会超过 10。我的字典被声明为 @987654322 @
-
那么你必须展示一些代码。线程库不太可能导致 CPU 使用率增加。更有可能是您的代码中的某些内容。
-
请展示一些源代码...否则很难给出任何具体答案...
-
没有一些代码就无法提供帮助...
标签: c# multithreading multicore sorteddictionary