On 8/9/2012 12:41 PM, Tom Tromey wrote: > This adds most of the thread features visible to emacs lisp. > > I roughly followed the Bordeaux threads API: > > http://trac.common-lisp.net/bordeaux-threads/wiki/ApiDocumentation > > ... but not identically. In particular I chose not to implement > interrupt-thread or destroy-thread, but instead a thread-signalling > approach. Thank you. Functions like that lead to nothing but trouble. > I'm still undecided about *default-special-bindings* (which I did not > implement). I think it would be more emacs-like to capture the let > bindings at make-thread time, but IIRC Stefan didn't like this idea > the first time around. I'm with Stefan here. Capturing the bindings at thread-creation time makes the binding in effect for a thread worker hard to reason about. Say Gnus binds *foo* and calls into bar-lib, which internally uses threads. bar-lib's thread worker has no idea *foo* is bound, and if a non-Gnus caller uses bar-lib, *foo* won't be bound. I feel like this approach would lead to hard-to-find bugs.