Each Lisp
mp:process
has a separate native thread.
Lisp code can only run in one thread at a time and uses a lock to enforce this.
When running a Lisp executable, you can only call back into Lisp in a thread that was created by Lisp.
When running a Lisp DLL, you can call back into Lisp in any thread.