我有这个定义:
Dictionary<int, Dictionary<int, int>> dict = new Dictionary<int, Dictionary<int, int>>();
我提前创建了1000个这样的词典:
for (int ix=0; ix < 1000; ix++)
dict[ix] = new Dictionary<int, int>();
我有1000个线程,每个线程在0到999之间有自己唯一的索引,每个写入数据如下:
dict[Thread unique Index][Some value] = some value.
这会有效还是多线程写作会出错?
我不想使用ConcurrentDictionary,因为我有很多写作,我想提高性能
答案 0 :(得分:2)
另一种方法:借助ThreadStatic属性为每个线程使用一个字典,然后将内容合并到主字典(ConcurrentDictionary)。
通过这种方法,您可以随心所欲地使用线程。
答案 1 :(得分:0)
我假设每个线程都会将多个值写入此字典。
使用以下内容时:
dict[Thread unique Index][Some value] = some value;
dict[Thread unique Index][Some value] = some value;
...
首先会查找&#34;特定于线程的#34;设置值之前的字典。它的使用速度要快得多:
Dictionary<int, int> myDict = dict[Thread unique Index];
myDict[Some value] = some value;
myDict[Some value] = some value;
...
在此更改后,ConcurrentDictionary
可能不会成为瓶颈。