[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Pipelining streams



    Date: Thu, 22 Oct 87 15:17 EDT
    From: Dennis L. Doughty <doughty@YUKON.SCRC.Symbolics.COM>

    Date: Wed, 21 Oct 87 10:48 EDT
    From: J. Scott Penberthy  <JSP@IBM.COM>

    Has anyone had any luck trying to 1pipeline0 streams?  Suppose that you
    had a function 2foo0 that takes an input stream as an argument.  Further,
    suppose you had another function 2bar0 that takes an output stream as an
    argument.  For example,

    Have you read the section on Coroutine Streams in the documentation?

Yes, I read the documentation on coroutine streams.  If you read
the documentation, you'll notice a paragraph that states

3Do not confuse coroutine streams with pipes.  Coroutine streams are used
for intraprocess communication; pipes are used for interprocess
communication.  3600-family machines do not currently support pipes.

0Further, the documentation states that the functions

3si:make-coroutine-input-stream
si:make-coroutine-output-stream
si:make-coroutine-bidirectional-stream

0exist.  But in fact, these functions don't exist.  I couldn't find the
first two in any package, and the third function exists only in the sys
package.  Sigh.

Dan Weinreb's recent message pointed to some little-known routines that
can be found in the basic source; I'm now using them.  However, Dan's
routines are limited by a shared buffer used by the input and output
stream functions.  Once this buffer is full, I imagine that the input
and/or output functions will stop until the buffer is cleared.  A "true"
pipe would dynamically expand this buffer as necessary, shrinking it
down to some reasonable size when all is finished.  Since I don't have
the source, its rather hard to enhance the existing code to more fully
simulate a pipe.

--Scott