This is the mail archive of the guile@cygnus.com mailing list for the guile project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: dynamic Bindings; thread-state


> If I understand what you're describing, RScheme does essentially just
> that.  The problems I've noticed are (1) it makes thread switches
> expensive (unwinding the fluids in the departing thread and rewinding them
> in the starting thread), and (2) it is impossible to use kernel (OS)
> threads.

I have just implemented fluid-let as I described in Kawa (i.e. under
the Java VM), which suggests it can be made to work under kernel threads.

The implementation model you describe is not what I would recommend.
The only the support you need from the thread system is some way to
provide per-thread data.  This does not need be more than a single
per-thread pointer, which can point to either the thread's dynamic
chain, or the per-thread Environment table.

Alternativly, if there is a getCurrentThread primitive, you can
use that as an index in a hashtable and get the dynamic chain
or Environment object that way.

	--Per Bothner
Cygnus Solutions     bothner@cygnus.com     http://www.cygnus.com/~bothner