From: <me...@ho...> - 2005-10-12 14:40:08
|
On Wednesday 12 October 2005 15:58, Tim Daly Jr. wrote: > I guess I don't quite understand the difference here. Currently, > each thread has its own binding for every special variable, right? If the parent thread has a non-global binding then the child also gets a=20 binding that's a copy of the parent's (it's a different binding with=20 the same value). (defparameter *x* 0) (let ((*x* 1)) (sb-thread:make-thread (lambda () (assert (=3D *x* 1)) (setq *x* 2))) (assert (=3D *x* 1))) > And you are proposing that they share all bindings except for the > ones listed in INITIAL-BINDINGS? I realized after sending it that 'a more conventional design' is not the=20 most precise description. I mean that they share no binding except the global binding: (defparameter *x* 0) (let ((*x* 1)) (sb-thread:make-thread (lambda () (assert (=3D *x* 0)) (setq *x* 2))) (assert (=3D *x* 1))) Not even the initial bindings are shared, the initial-bindings argument=20 is to make a thread perform bindings on startup as documented in: http://www.franz.com/support/documentation/7.0/doc/multiprocessing.htm#dyna= mic-environments-1 A way to establish a binding that's not global but shared between a=20 number of threads (a session?) might be useful, too. > > -Tim Hopefully, I didn't butcher the terminology too badly. G=E1bor |