← Back to context

Comment by kiitos

4 days ago

> setting a field to true from potentially multiple threads can be a completely meaningful operation e.g. if you only care about if ANY of the threads have finished execution.

this only works when the language defines a memory model where bools are guaranteed to have atomic reads and writes

so you can't make a claim like "setting a field to true from ... multiple threads ... can be a meaningful operation e.g. if you only care about if ANY of the threads have finished execution"

as that claim only holds when the memory model allows it

which is not true in general, and definitely not true in go

assumptions everywhere!!

> can never be safe in a concurrency setting. In any language.

Then I give an example of a language where it's safe

I don't get your point. The negation of all is a single example where it doesn't apply.

GP didn’t say “setting a ‘bool’ value to true”, it referred to setting a “field”. Interpreted charitably, this would be done in Go via a type that does support atomic updates, which is totally possible.

  • "setting a field to true" clearly means `x.field = value` and not `x.field.Set(value)`