For question A), since GemFire version 7 (the latest version is 9.0.x), GemFire automatically resolve data inconsistency caused with updating the same data entry by multiple threads from different location by default via "consistency checking" feature. It resolves data inconsistency for each region type differently. Please fake a look at the following docs.
[Consistency Checking by Region Type]
This realize "to make the operation atomic" as a result in terms of "eventually consistency."
If you want to realize "to make the operation atomic" in this context, you may apply "Global Region" or "Distributed Lock" although you need to accept some limitations. Please refer to the following docs regarding "Global Region."
[Locking in Global Regions]
You may also apply DistributedLockService API. But this is not only region level API but also any purpose of locking mechanism in the distributed system.
You need much more effort to realize "to make the operation atomic" anyhow. You should be careful to use this API to avoid dead-lock situation.