Provided by: tcl-memchan_2.3+dfsg-1_amd64 bug


       fifo - Create and manipulate u-turn fifo channels


       package require Tcl

       package require memchan




       fifo   creates  a  stream-oriented  in-memory  channel and returns its handle. There is no
              restriction on the ultimate size of the channel, it will always grow as much as  is
              necessary to accommodate the data written into it.

              In contrast to the channels generated by memchan a channel created here effectively
              represents an U-turn. All data written into it can be read out,  but  only  in  the
              same order. This also means that a fifo channel is not seekable.

              The  channels  created  here  can  be  transferred between interpreters in the same
              thread and between threads, but only as a whole. It is not possible to use them  to
              create a bi- or unidirectional connection between two interpreters.

       Memory channels created by fifo provide two read-only options which can be queried via the
       standard fconfigure command. These are

              The value of this option is the number of bytes currently  stored  in  the  queried
              memory channel.

              The  value of this option is the number of bytes currently allocated by the queried
              memory channel. This number is at least as big as the value of -length.

       As the channels generated by fifo grow as necessary they are always writable.  This  means
       that a writable fileevent-handler will fire continuously.

       The channels are also readable if they contain more than zero bytes. Under this conditions
       a readable fileevent-handler will fire continuously.


       One possible application of memory channels created by memchan or  fifo  is  as  temporary
       storage  device  to  collect  data  coming  in  over  a  pipe  or a socket. If part of the
       processing of the incoming data is to read and process header bytes or  similar  fifo  are
       easier  to  use  as  they  do  not  require  seeking  back and forth to switch between the
       assimilation of headers at the beginning and writing new data at the end.


       fifo2, memchan, null


       channel, fifo, i/o, in-memory channel, memchan, stream


       Copyright (c) 1996-2003 Andreas Kupries <>