Welcome to the threads-standard-discuss mailing list. It was created as a result of discussion at the Libre Software Meeting in Bordeaux in July 2004, as a venue for creating a portable de facto standard for use by multithreaded Common Lisp code.
I have prepared an initial draft specification entitled BORDEAUX-MP, based on CLIM-SYS (and the needs of McCLIM, which are in fact not quite the same), which is available at
http://cvs.telent.net/cgi-bin/viewcvs.cgi/bordeaux-mp/Specification?view=mar...
Eventually there will also be a sample implementation to go with it, using code borrowed from McCLIM.
I invite comments/feedback/flames from all interested parties. Points which have been raised so far include
1) behaviour of specials in a new thread: "did you just make it undefined so that the SBCL implementation would be simpler?"
I propose to add a list of specials which automatically get thread-local bindings in each new process: something like ACL's *cl-default-special-bindings*
2) "condition variable" is an unfortunate name as there is already a similarly named but entirely different CONDITION object in CL
I don't have any good ideas about this one.
3) A process-state reader might be nice
I personally don't see the point, much, unless the semantics of its allowable values are also defined.
(Personal position: I'm far more concerned about the ability to write real threaded applications than I am about writing a replacement for top(1) in CL)
4) Some form of control over process priority
This might be useful if you have for example a foreground display process that you wish to remain responsive, and a background computation task that only needs to run when nothing else is happening.
On the other hand, it might be a fast track to priority inversion and some form of starvation. Discuss.
A handy summary of some of the various terms involved is at URL:http://www.cs.columbia.edu/~hgs/os/sync.html, for anyone wanting definitions
-dan