No, for better or for worse, I didn't. I was previously using an unordered_map, so this just splits it into multiple unordered_map bins, each with its own lock. I was assuming that the main flaw before was just the blocking on the single lock, but that otherwise std::unordered_map was adequate, and I wanted to avoid having to implement and debug a custom hash map implementation.