java.nio.*Buffer read/write atomicity
Aleksey Shipilev
aleksey.shipilev at oracle.com
Thu Dec 20 17:18:32 UTC 2012
On 12/20/2012 09:11 PM, mark.reinhold at oracle.com wrote:
> 2012/12/19 12:37 -0800, david.holmes at oracle.com:
>> If multiple threads have to synchronize access to the buffer then the
>> reads/writes do not need to be atomic. Atomicity is only needed when
>> data races are allowed.
>
> Correct.
>
> Byte buffers, especially the direct variety, are all about performance.
> Making operations upon them atomic is not a problem that needs to be
> solved.
I would say that you can have the read/write atomicity for heap
ByteBuffers without the compromises in performance (i.e. like direct
ByteBuffer does with full-width reads/writes) -- basically prune out the
Java code which breaks ints into the series of bytes, and cram in
Unsafe.putInt() against backing array.
This is not about making the CAS updates, it is about making reads and
writes appear indivisible. Seems to be a good thing even if unspec'ed.
-Aleksey.
More information about the core-libs-dev
mailing list