Re:Data Race Patterns in Go
by tialaramex on Wednesday June 15, 2022 @08:33AM
(#31752020)
Ooh, I did not know this. Do you happen to know where the "no-out-of-thin-air" guarantee is for the 32-bit primitives? Presumably in the Memory model docs somewhere?
I quickly glanced at the spec, but didn’t find it. But I didn’t make it up though, I remember reading it on the jvm mailing list and I found it here described by Brian Goetz himself: https://openjdk.org/projects/valhalla/design-notes/state-of-...
Re:Data Race Patterns in Go
by tialaramex on Wednesday June 15, 2022 @03:24PM
(#31758092)
Thanks for that, it makes sense but it's good to know somebody specifically thought about this rather than "Eh, it seems to work".
Actually, if it is an int, it is guaranteed to not be any number not explicitly set to (java has no-out-of-thin-air guarantees for 32-bit primitives). In practice on every modern implementation it is true of 64-bit primitives as well.
So the prototypical data race condition of incrementing a primitive counter from n threads can loose counts, but will never have any value outside the 0..TRUE_COUNT range.