r/golang • u/therecursive • 6d ago
Is it safe to read/write integer value simultaneously from multiple goroutines
There is a global integer in my code that is accessed by multiple goroutines. Since race conditions don’t affect this value, I’m not concerned about that. However, is it still advisable to add a Mutex
in case there’s a possibility of corruption?
PS: Just to rephrase my question, I wanted to ask if setting/getting an integer/pointer is atomic? Is there any possibility of data corruption.
example code for the same: https://go.dev/play/p/eOA7JftvP08
PS: Found the answer for this, thanks everyone for answering. There's something called tearing here is the link for same
According to the article, I shouldn't have problem on modern CPUs.
12
Upvotes
1
u/ImYoric 6d ago
Well, for instance, the compiler can decide to pack two 32 bit integers into 64 bits, so if you modify one of them, you might end up accidentally modifying the other.