[concurrency-interest] Spin Loop Hint support: Draft JEP
mjpt777 at gmail.com
Tue Dec 1 09:13:44 EST 2015
On 1 December 2015 at 13:46, Vitaly Davidovich <vitalyd at gmail.com> wrote:
> Relax was a suggested name that fits with the current Linux kernel
>> convention. However it was felt this suggested implementation rather than
>> notifying state.
> Yes, 'relax' is a well known term for this, and sticking to known
> conventions/terms is desirable. I don't see how it suggests implementation
> though, nor even if it did suggest anything, why that's a bad thing. If we
> want to avoid any suggestions, let's call it "foobar" :).
Thread.relax() was my initial suggestion. I'll leave it to the others for
why they did not think this was suitable.
> The "on" prefix was suggested as the caller is notifying the runtime that
>> it is in a spin-wait loop. This allows the runtime the option of reacting
>> to the event, or not, and allows flexibility in how it chooses to react to
>> this information. The method is not waiting; the method is notifying that
>> the caller is waiting.
> Yes, but we don't have Runtime.onGC() or Runtime.onRunFinalization(), and
> both of those are documented as "suggesting" the VM perform those actions.
> spinLoopHint() sounded much better than what's proposed here, and carries
> the suggestion/hint/optionality that's desired. IMHO, onSpinWait() is the
> least appealing options proposed thus far.
System.gc() and Runtime.runFinalizersOnExit(boolean) are clear instructions
to the system/runtime to do something in an imperative fashion. The
onSpinWait() is a declarative statement about the state of the current
thread. I can understand a dislike to a name. We all have personal taste on
this but I don't think you are comparing similar semantics.
Consider the runtime as an object. You send it a message via a method. What
exactly is spinLoopHint() telling the Runtime what to do? It is applying an
event but not expressing it via any convention. "spinLoopHint()" works for
me on a Thread to an extent. We should express intent or declare status for
this. Hints don't fit comfortably in a programming model.
The actual naming does not matter so much as this will only be used by
minority of programmers. I'll prepare to be flamed on that :-) However it
is desperately needed and anything that makes it slip the date to make Java
9 would be such a let down.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Concurrency-interest