Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is the list order of a ConcurrentDictionary guaranteed?

I am using a ConcurrentDictionary to store log-lines, and when I need to display them to the user I call ToList() to generate a list. But the weird thing is that some users receive the most recent lines first in the list, while they should logically be last.

Is this because ConcurrentDictionary doesnt guarantee a persistent order on the IEnumerate interface, or what can be the reason?

like image 955
Maestro Avatar asked Feb 15 '23 15:02

Maestro


2 Answers

No ConcurrentDictionary (and Dictionary<T> for that matter) does not guarantee the ordering of the keys in the list. You'll have to use a different data type or perform the sorting yourself. For non-concurrent code you would use SortedDictionary<T>, but I don't believe there is an analogue in the concurrent collections.

like image 142
shf301 Avatar answered Mar 03 '23 14:03

shf301


No. The list order of ConcurrentDictionary is NOT guaranteed, lines can come out in any order.

like image 28
driis Avatar answered Mar 03 '23 13:03

driis