The answer (like most threading issues) will work most of the time. Unfortunately, if you catch the card while it changes, then you will be in trouble. Then no.
To get maximum performance, you will need a multi-stage lock. Firstly, a read lock, which allows accessors that cannot change the map and which can be held by multiple threads (more than one thread reading element in order). Secondly, a record lock, which is exclusive, which allows you to modify the card in such a way that it can be dangerous (add, delete, etc.).
edit Read-write locks are good, but whether they are better than the standard mutex depends on the usage pattern. I can not recommend without knowing more. Profile and see what best suits your needs.
source share