Hello All,


This is my first post to this mailing list, so thank you in advance for your time and thoughts.


I am working on a parallelization library for our program ACL2 (http://www.cs.utexas.edu/users/moore/acl2/).  ACL2 builds on several LISPs, including SBCL and OpenMCL.  I am trying to determine which of our parallelization features we can port to SBCL.  The OpenMCL maintainers were kind enough to provide a feature to the “process-run-function” macro that signals a semaphore upon the death of a thread.  This allows us to terminate child threads that have had zero CPU time (and thus have not entered any of the ACL2 level code) and still have them report to their parents that they are “done.”  Even if a parent does not need a child’s result, the parent is required to wait for the child to announce that it is done before the parent is allowed to return its result.  Amongst other things, this requirement helps us maintain stability in our system.


Is there a “signal something upon death” feature like this in SBCL?  I understand that SBCL uses condition variables, not semaphores, but I have built a semaphore wrapper around the condition variables and mutexes so that my code is more uniform across distributions.


Thank you,

David L. Rager