Do NOT use permanently-register-io-thread-event in Edwin.
authorMatt Birkholz <puck@birchwood-abbey.net>
Sun, 5 Jul 2015 16:21:17 +0000 (09:21 -0700)
committerMatt Birkholz <puck@birchwood-abbey.net>
Sun, 3 Jan 2016 20:06:11 +0000 (13:06 -0700)
commit52eea88fdbcae622d13eebee7c48e9353f3c832d
tree1df0cafaadb9740de69053f46b028ad6f7fd0744
parentc9477b593bb421524fa35b9abe7d01958f6b4e17
Do NOT use permanently-register-io-thread-event in Edwin.

Edwin does not consume the IO in the thread event.  This worked in a
uni-processing world where another thread could consume the IO in
round-robin fashion, but in an SMPing world there is no way to know
when it is appropriate to signal another event.  In a naive
implementation (without special handling of these events), an idle
processor would spin, queuing MANY "IO ready" events to one thread
until another thread consumed the IO.

Edwin's X11 and console display types now block for IO on multiple
descriptors, the X or tty descriptor PLUS the subprocess output
descriptors.  They no longer use permanent IO thread events to handle
the latter.

Edwin's remaining uses of permanently-register-io-thread-event are in
single-threaded OS2 and Win32 worlds.  The runtime's only uses are in
the OS2 and X11 graphics devices where the IO *is* consumed during the
event.
src/edwin/edwin.pkg
src/edwin/process.scm
src/edwin/tterm.scm
src/edwin/xterm.scm