[E-Lang] multithreading

Mark S. Miller markm@caplet.com
Thu, 19 Jul 2001 09:22:44 -0700


--=====================_121477918==_.ALT
Content-Type: text/plain; charset="us-ascii"

At 07:13 AM Thursday 7/19/01, Jonathan S. Shapiro wrote:
>The most obvious is flow control on full-duplex streams. You have an input 
>stream and an output stream, and the input stream needs to be able to 
>preempt the output stream when XOFF arrives. I think it's worth noting that 
>E relies on the underlying runtime to hide certain types of underlying 
>asynchrony (like this one).
> 
>Hmm. I was going to write a longer note, but I see that time has gotten away 
>from me. Here is the challenge question: how should full-duplex streams be 
>managed in E?

Frankly, I don't understand the example.  Why isn't preempting the output 
stream between requests adequate.  Even a preemptive scheduler can't 
guarantee that anything better would happen (unless you introduce priorities 
and such).

In any case, if there are only a few rare general purpose cases such as this 
one that can be absorbed into a reusable abstraction, I have no problem 
extending the underlying runtime & UTCB to provide "devices" that handle 
these additional cases "primitively".  Though it would be better not to have 
to extend the UTCB, of course, so I look forward to understanding the question.


        Cheers,
        --MarkM

--=====================_121477918==_.ALT
Content-Type: text/html; charset="us-ascii"

At 07:13 AM Thursday 7/19/01, Jonathan S. Shapiro wrote:
The most obvious is flow control on full-duplex streams. You have an input
stream and an output stream, and the input stream needs to be able to
preempt the output stream when XOFF arrives. I think it's worth noting that
E relies on the underlying runtime to hide certain types of underlying
asynchrony (like this one).
 
Hmm. I was going to write a longer note, but I see that time has gotten away
from me. Here is the challenge question: how should full-duplex streams be
managed in E?

Frankly, I don't understand the example.  Why isn't preempting the output
stream between requests adequate.  Even a preemptive scheduler can't
guarantee that anything better would happen (unless you introduce priorities
and such).

In any case, if there are only a few rare general purpose cases such as this
one that can be absorbed into a reusable abstraction, I have no problem
extending the underlying runtime & UTCB to provide "devices" that handle
these additional cases "primitively".  Though it would be better not to have
to extend the UTCB, of course, so I look forward to understanding the question.

        Cheers,
        --MarkM
--=====================_121477918==_.ALT--