Single reads of Boolean or object references are atomic. So, if you are comparing one common value with a constant or local variable, no "lock" is required. As John said, you will need to use Interlocked.CompareExchangeit to make sure you read the last value if the shared variables are not volatile.
If both mappings are separate, then you will need the actual lock. There is no way to atomically compare two common AFAIK values.
Update:
I recommend explicit blocking for shared data. Keep in mind that the source code has been completely broken, so feel free to change it.
, ? ; , . , , -.