Reads and writes to certain primitive types in C# such as bool and int are atomic.
(See section 5.5, \"5.5 Atomicity of variable reference
Atomicity just means that if more than one thread is writing to a variable, its value won't get corrupted (e.g. if it takes up two bytes, you will never get thread one's high byte and thread two's low byte). It does not mean the variable is thread-safe. You can still get the usual threading problems of one thread not seeing anothers changes etc.
For thread-safety you need to use locking (or volatile, but this is harder to reason about). There is nothing special about properties - they need to be made explicitly thread-safe too.