Subject: Re: Multiprocessing in CMUCL
From: rpw3@rpw3.org (Rob Warnock)
Date: Fri, 06 Jun 2008 06:09:01 -0500
Newsgroups: comp.lang.lisp
Message-ID: <yKCdnevzreFQh9TVnZ2dnUVZ_tPinZ2d@speakeasy.net>
Madhu  <enometh@meer.net> wrote:
+---------------
| I've used and would recommend a mixture of the docstrings (which are
| reasonably good) and the clim-spec as a guide to CMUCL's MP.  Be warned
| that the implementation (x86 only) is reasonably stable for all common
| uses but is not polished and would still be billed as `experimental' in
| many circles.
+---------------

While technically true, I have used CMUCL's "processes"[1] in
production web applications servers which spawned a new process
for each HTTP request, and -- as far as I can tell -- in over
6 years and three sites there have been *no* crashes due to
instability in CMUCL's MP primitives.

But as usual, YMMV. In particular, I was careful to make sure
that in normal operation the CMUCL image doesn't have to handle
any Unix signals. E.g., *don't* use the (truly-experimental!!)
pre-emptive MP scheduling which relies on SIGALRM, but instead
use only the default cooperative scheduling [which uses the timeout
parameter in the "select()" system call]. *Don't* allow SIGPIPE;
set it to SIG_IGN and handle the EPIPE I/O error exception instead.
Etc., etc.


-Rob

[1] What CMUCL calls "multiprocessing" (a heritage from CLIM?)
    is what most other people would call "multiprogramming"
    or even simply or user-mode coroutines ("green threads").

-----
Rob Warnock			<rpw3@rpw3.org>
627 26th Avenue			<URL:http://rpw3.org/>
San Mateo, CA 94403		(650)572-2607