4 ms·
Is compound assignment atomic in any major language?
by colonCapitalDee 1y ago
Is compound assignment atomic in any major language?
- Groxx 1y agoit has been in Python due to the GIL.
- i80and 1y agoIt's not atomic even with the GIL, though: another thread can run in between the bytecode's load and increment, right? The GIL's guarantees didn't extend to this.
- deleted 1y ago[deleted]
- Groxx 1y agoThere is NB_INPLACE_ADD... but I'm struggling to find enough details to be truly confident :\ possibly its existence is misleading other people (thus me) to think += is a single operation in bytecode. Or, on further reading, maybe it applies to anything that implements `_iadd_` in C. Which does not appear to include native longs: https://github.com/python/cpython/blob/main/Objects/longobject.c#L6621 https://github.com/python/cpython/blob/main/Objects/longobje...
- arccy 1y agono... but some languages may disallow simultaneously holding a reference in different execution threads
- delusional 1y agoPython and Javascript (in the browser) due to their single threaded nature. C++ too as long as you have a std::atomic on the left hand side (since they overload the operator).