[Openmcl-devel] Interest in documentation reorganization?

Alan Ruttenberg alanr-l at mumble.net
Mon Jun 7 14:44:44 PDT 2004


Another great source of documentation is the mailing list. If there is 
interest, I could go through the archives and pull together a selection 
of postings that have concentrated technical information (mostly 
written by Gary).

Not sure what the format would be, maybe a list of references from 
sections of the existing documentation to relevant postings.
As an example the most recent posting from Gary has useful information 
about the streams implementation. Here's one way we could edit it and 
package it up:

***

Keywords: Streams, Performance, Locks, Without-interrupts, 
Unwind-protect

Most writes to a file stream involve copying some bytes into a buffer
and adjusting some related pointers.  (A few such calls also involve
doing I/O to the file system)

In OpenMCL, all (well, most ...) streams are assumed to be globally
accessible, so all transactions on potentially shared streams involve
locking.  In cases where there's no contention involved (i.e., most or
all of the time), locking isn't incredibly expensive in and of itself,
but the locking/unlocking has to be UNWIND-PROTECTed, and
UNWIND-PROTECT's fairly expensive in OpenMCL (for threading-related
reasons.)  The actual "store some bytes in a buffer and adjust some
pointers" operation isn't reentrant, so it's also within a
WITHOUT-INTERRUPTS (which involves another UNWIND-PROTECT.)

It's generally the case that something like WRITE-STRING or
WRITE-SEQUENCE is likely to be faster than an equivalant sequence
of WRITE-CHARS; this is probably more pronounced in OpenMCL than
in other implementations because of this locking/WITHOUT-INTERRUPTS/
UNWIND-PROTECT overhead.

I would guess that most streams are thread-private and the reentrancy 
issue's a lot
more pronounced for things like *TERMINAL-IO* than for things created 
with WITH-OPEN-FILE

[Extracted from "Faster Formatting for fun (the OpenMCL version)" <link 
to thread view>]

***

Then include a link to this in FAQ, Doc on streams, performance, 
Sempahores etc.

-Alan




More information about the Openmcl-devel mailing list