On 13 May 2012 19:58, Helmut Eller heller@common-lisp.net wrote:
What should not be used: WITH-DEADLINE or WITH-WORLD-LOCK? Obviously
WITH-DEADLINE should be used, IMO. I don't quite follow what you consider to be the problem with it.
The reason grabbing WITH-WORLD-LOCK is bad is because doing that creates new places where things can deadlock.
When we finally get rid of the world lock around (or hack CLOS dispatch to use evaluated functions when the compiler is taken), every single place where world lock is grabbed is still a potential deadlock: world lock is bad (like any other huge lock) not just because it kilsl parallelism, but because reasoning about lock ordering becomes essentially impossible. If a system has one lock lock big enough that arbitrary code can run inside means that's bad but ... survivable. If there are two or more such locks, then those locks can't really have a proper ordering between them, and you get deadlocks.
The second reason WITH-WORLD-LOCK is bad is that I'm trying get rid of it by breaking it up into smaller locks. So swank-sbcl.lisp will need more #+magic -- not terrible, but not ideal either.
Cheers,
-- Nikodemus