On Wed, 16 Jun 2004, Luke Gorrie wrote:
Gary King gwking@cs.umass.edu writes:
Suppose I type
(loop repeat 10000 do (sleep 0.5) (princ "."))
Also, no periods are printing. Where are they going? Are they filling up my computer like those little holes from a three hold punch? What if it runs out of space? (Sorry, long night).
There is some buffering and I'm not sure of the exact semantics on OpenMCL. I think it'll flush before filling the code with . characters though :-)
-Luke
A few times a second, a thread wakes up and tries to call FORCE-OUTPUT on every stream on the list CCL::*AUTO-FLUSH-STREAMS*. FORCE-OUTPUT isn't otherwise called automatically until the buffer's full (i.e., streams aren't line-buffered). The default buffer size is 2K bytes, so the code above should produce a bufferful of output every 1K seconds or so.
It's more awkward than it could be to register/deregister a stream for this handling (OTOH, it's not supposed to be the sort of thing that happens all that often, either.) At one point, I think that the swank backend for OpenMCL did this, but it doesn't seem to do so currently.