如何选择并发字典的并发级别

Mic*_*ale 14 concurrentdictionary

我正在使用并发字典来存储大约200万条记录,并希望知道将字典的并发级别初始化为什么.

MSDN页面的示例代码中包含以下注释:

concurrencyLevel越高,可以在ConcurrentDictionary上同时执行的理论操作数越高.但是,随着concurrencyLevel的上升,调整字典大小等全局操作会花费更长的时间.

这是我能找到的最好的解释concurrencyLevel的含义,但它仍然很模糊.

Sne*_*tel 15

最重要的是要理解,即使你有更多的并发访问concurrencyLevel,操作仍然是线程安全的.也就是说,设置concurrencyLevel是性能问题,而不是正确性.

concurrencyLevel指定可用于映射操作的独立锁的数量.如果您有n并发访问字典的线程,设置concurrencyLevel高于n不会产生任何额外的好处.通常,最佳值concurrencyLevel将显着低于工作线程的数量,因为给定的工作人员不会花费大部分时间来访问字典.

分析您的应用程序确实是确定最佳应用程序的唯一方法concurrencyLevel.但是,将其设置为预期的工作线程数是一个良好的开端.