Amr*_*j.V 5 c# multithreading multicore sorteddictionary
我有一个.NET线程,分配给核心#7.线程功能在300ms内触发一次.最初执行一个呼叫大约需要20-30毫秒.但是这个时间逐渐增加,在接到2,52,000个电话后变得超过150毫秒.
另外我注意到核心#7的使用率从10%开始.当线程函数的调用次数达到2,52,000时,核心#7的处理器使用率变为大约60%.当我停止触发线程功能时,处理器使用率变为0%.但是当我再次开始触发时,核心使用率从60%开始(而不是从0%开始)并再次逐渐增加.
我还注意到应用程序没有内存泄漏.
在我的线程函数中,我将两个字典的元素组合在一起并将其添加到foreach循环中的另一个字典中.字典中的元素数量始终为45.
我希望这个应用程序24/7运行.请让我知道一些使这个处理器使用不变的技巧.
当您将项目添加到Dictionary容量时,可能需要增加容量。你的字典会永远增长吗?
来自MSDN:
如果 Count 小于容量,则此方法接近 O(1) 操作。如果必须增加容量以容纳新元素,则此方法将变为 O(n) 操作,其中 n 是 Count。