News for hackers. Stuff that matters.
Re:Data Race Patterns in Go by kaba0 on Saturday June 11, 2022 @02:23PM (#31706798)
> so the signed integer you're using to count stuff up from zero might be -16 now, which is astonishing

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.

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?
Re:Data Race Patterns in Go by kaba0 on Wednesday June 15, 2022 @10:06AM (#31753085)
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".