Hi Uwe,
you are right! It's confusing because for cases 2-4, *atomic* access is
explicitly mentioned but not for case 1. I overlooked the *atomic
access* in the sentence before and got confused.
Thanks for the clarification!
On 1/5/23 13:37, Uwe Schindler wrote:
Hi,
I answered on the PR on github. The documentation is misleading:
The copypasted snippet above is misleading, you need to read the
whole statement, so an IllegalStateException can only happen for
unaligned access on access modes other than get/set (so volatile or
opaque reads): "If access is misaligned then access for
anything*other than the get and set access modes*will result in an
IllegalStateException.", the sentence you posted is about if it is
atomic or not. It just says that on 32 bits, long/double are not
atomic for normal set/get.
P.S.: We definitely know that it works on 32 bit, the whole code of
Lucene is full of those VarHandles :-)
And no, it doe snot mean "get-and-set". Read the whole text, it is
definitely correct, but if you don't read everything it may mislead you.
So it can be improved.
Uwe