>But dictionaries are mutable, which makes them problematic for sharing data in concurrent code.
Not really, C# has ConcurrentDictionary.