'Make sure there are Y threads' doesn't answer the need.  It's not sufficient.  A primitive that allocates one thread with all the options it might want, IS sufficient.

You need to write a verb that does what's needed, and yes, it will have to take a lock.  Probably you would need to ensure that all packages take the same lock.  That's a good argument for starting on that verb soon.

Henry Rich



On 4/29/2022 7:45 PM, Raul Miller wrote:
On Fri, Apr 29, 2022 at 6:16 PM Henry Rich <[email protected]> wrote:
Yes: we would want a language of machine requirements.  The code to
allocate threads would compare what is already allocated with what has
been requested and make the right decision.  This makes it plain, does
it not, that this work should be outside JE, in the user's hands.
Sure, just be careful about what you identify as "this".

That said, "what is already allocated" should only be significant in
the sense of figuring out how many more threads are needed (because we
do not track why the threads were allocated). So that should not be
relevant to the user in this context.

(How many threads are currently running is useful in a debugging sense
-- it's useful to help the user understand how the machine works.  But
it should never be thought of as relevant for the purpose of figuring
out how many threads are currently needed. That problem should be
tackled at, at least, one level of abstraction higher.)

And... that said, if it does turn out that in some obscure
circumstance we want to dynamically allocate more threads based how
many are currently running, a language primitive which gives us an
implementation of "run Y threads" could still be used for that
purpose.

The only downside I am seeing here is that this mechanism would need
to assert a lock, to lock out other instances of itself while it
checks the current number of running theads, and while it is
incrementing towards the needed number of threads. But that is work
that will have to be done every time this mechanism is used, if
programmers are going to use this mechanism at all. So I am having
trouble seeing this as a downside.

Do you anticipate any other sorts of problems with a "make sure Y
threads are running" primitive?

Thanks,



--
This email has been checked for viruses by AVG.
https://www.avg.com

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to