From: Peter Seibel
Subject: dynamic variables and multithreading?
Date: 
Message-ID: <m3he203ndk.fsf@javamonkey.com>
From what I gather, most multithreaded Common Lisp's, implement
dynamic variables such that for globally special variables, all
threads share access to the global binding (regardless of what thread
it was created in) but that subsequent bindings are per-thread.

I further assume locally special (i.e. (let (x) (declare (special x))
...) where x has not been proclaimed special) variables are purely
per-thread. Is that right?

Are there any Common Lisp's that provide different semantics?

-Peter

-- 
Peter Seibel                                      ·····@javamonkey.com

         Lisp is the red pill. -- John Fraser, comp.lang.lisp
From: Barry Margolin
Subject: Re: dynamic variables and multithreading?
Date: 
Message-ID: <0TDlb.176$lK3.136@news.level3.com>
In article <··············@javamonkey.com>,
Peter Seibel  <·····@javamonkey.com> wrote:
>From what I gather, most multithreaded Common Lisp's, implement
>dynamic variables such that for globally special variables, all
>threads share access to the global binding (regardless of what thread
>it was created in) but that subsequent bindings are per-thread.

This is how it was done on the Lisp Machine, and I think most subsequent
implementations have copied this behavior. 

>I further assume locally special (i.e. (let (x) (declare (special x))
>...) where x has not been proclaimed special) variables are purely
>per-thread. Is that right?

The dynamic binding mechanism is the same in this case as the previous one.
The only difference is that the global value cell is unbound.

-- 
Barry Margolin, ··············@level3.com
Level(3), Woburn, MA
*** DON'T SEND TECHNICAL QUESTIONS DIRECTLY TO ME, post them to newsgroups.
Please DON'T copy followups to me -- I'll assume it wasn't posted to the group.