On Tue, 03 Feb 2004 14:38:20 +0100, Eric Marsden <[EMAIL PROTECTED]> wrote:

> there are two things to look out for: (i) your init-function should
> return an integer that will be the Unix exit code;

Argh - I actually knew this! I was bitten by this some time ago
already. Sorry for the noise.

> (ii) your init-function should set up a catch block for
> %END-OF-THE-WORLD, since this is used by CMUCL's internal error
> handling machinery.
>
> One way of achieving what you want is 
>
> ,----
> |   (defun foo ()
> |     (loop for i below 10
> |           do (print i) (sleep .5))
> |     (ext:quit))
> | 
> |   (defun bar ()
> |     (catch 'lisp::%end-of-the-world
> |       (mp::init-multi-processing)
> |       (mp:make-process #'foo)
> |       (mp:make-process #'foo)
> |       (mp::idle-process-loop)))
> `----

Thanks, that works fine for me. Thanks also to Helmut Eller.

> that's because the compiler knows that S-I-A-T-L-L does not return.

Just out of curiosity: Where does it know that from? Is this
explicitely stated somewhere in the code or can it deduce this
somehow?

Thanks again,
Edi.

Reply via email to