Edi Weitz wrote:
Unless they've changed this recently, AllegroCL (like LispWorks pre-6.x) has a big lock which blocks all other threads no matter whether they're Lisp or foreign threads.
From Franz:
<quote> In some senses, his statement is correct, but not because of any "big lock". The effect is seen on "virtual" or "green" threads implementations like the OS X/Linux versions you are discussing in that thread. Note that our virtual threads implementation uses only one thread, and so if you have another real thread (spawned by pthread_create or similar) the lisp will have no effect on that thread. If you spawn the thread through lisp, via e.g. process-run-function, then it is not really a "thread", because it is virtual, and has to wait for the (virtual) scheduler to schedule it. Other real threads will run as the system sees fit.
On Windows, we have an implementation called os-threads which ties the thread spawned by process-run-function directly to a real thread, and so it acts precisely as you implied it would in the cxml-devel mail thread. </quote>
Chaitanya