[concurrency-interest] Spin Loop Hint support: Draft JEP

Vitaly Davidovich vitalyd at gmail.com
Tue Dec 1 09:22:50 EST 2015


>
> Thread.relax() was my initial suggestion. I'll leave it to the others for
> why they did not think this was suitable.


Yes, that would work for me as well although I'd prefer to have 'cpu' in
the name to be more clear.  But either way, sticking to known/common
nomenclature is good; ad-hoc names are not.

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.


System.gc() can be thought of as "I'm suggesting to the JVM that now is a
good time to perform GC", so it's as much about the state of things (known
to caller, unknown to JVM or else this wouldn't be needed).  We can agree
to disagree here, but I don't see "good time to run GC" vs "good time to
relax the CPU" as having any strong semantic differences.

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.


I should've been clearer, but I meant spinLoopHint on Thread was a better
proposal.  I agree that Runtime isn't the right place for something of that
name.

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.


Agreed.  Ultimately someone will be unhappy with the name and/or placement,
but while these options are being discussed I think it'd be good to hear
multiple viewpoints.

On Tue, Dec 1, 2015 at 9:13 AM, Martin Thompson <mjpt777 at gmail.com> wrote:

>
> 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.
>
> Martin...
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cs.oswego.edu/pipermail/concurrency-interest/attachments/20151201/6aafb7d0/attachment-0001.html>


More information about the Concurrency-interest mailing list