How to process a dictionary with multi tasking?

In my case I am only reading. What I do not want to happen is two threads reading the same entry in the dict and thus producing twice the same result. My count would be completely off.

For the creation if was I used multithreading but with a lock before the merge!. I also used an intermediary dictionary for each threads to avoid the cost of the lock, which was used only when I merged all dictionaries together.