VarHandles & LMAX Disruptor
Kirk Pepperdine
kirk.pepperdine at gmail.com
Tue Jul 28 15:28:33 UTC 2015
On Jul 28, 2015, at 4:56 PM, Vitaly Davidovich <vitalyd at gmail.com> wrote:
> I'll second Mike's suggestion of having VarHandle method names reflect
> their memory ordering effects, although I don't know if I'd want get/set to
> use the default based on the presence/absence of volatile modifier. If the
> API were to expose all supported flavors of ordering, it'd be nice if *all*
> read/write ops had the effect in the method name.
Absolutely, it will have a tremendous positive impact on the readability of the code.
Regards,
Kirk
>
> On Tue, Jul 28, 2015 at 10:24 AM, Paul Sandoz <paul.sandoz at oracle.com>
> wrote:
>
>>
>> On 27 Jul 2015, at 23:04, Michael Barker <mikeb01 at gmail.com> wrote:
>>
>>> On 28 July 2015 at 02:32, Brian Goetz <brian.goetz at oracle.com> wrote:
>>>
>>>> - I think VarHandle.set/get should be called
>>>>> setRelaxed/getRelaxed as
>>>>> it> would make it more obvious to a user and a reader what those
>>>>> methods are> going to do. My initial assumption was that they
>>>>> were
>>>>> no different from a> normal write/read of a field.
>>>>>
>>>>> An alternative here is that get/set does whatever the default is for
>>>>> that field (so a volatile field would get ordered access) and
>>>>> {get,set}Relaxed would force a relaxed access (even for volatile
>>>>> fields.)
>>>>>
>>>>> That would make sense, however it would preclude the ability to apply a
>>>>> normal load/store to volatile field.
>>>>>
>>>>
>>>> Sorry, I wasn't clear. "Alternative" applied to "get rid of get/set"
>>>> within the context of having an explicit {set,get}Relaxed. In other
>> words,
>>>> have getters/setters for all the modes, and then define "naked" get/set
>> to
>>>> mean "whatever is default for this variable.
>>>>
>>>
>>> If VarHandles supported all access modes (Volatile, Acq/Rel, Relaxed and
>>> Normal) with explicit calls and provided "naked" get/set as a default
>> based
>>> on the absence/presence of the volatile modifier then that would make
>> for a
>>> nice, complete API.
>>>
>>
>> I think that’s a good suggestion, worth adding. Stay tuned.
>>
>> Paul.
>>
>>
More information about the valhalla-dev
mailing list