22:11:22drmeisterBike: I found it - I was missing a macro invocation.
22:12:01drmeisterHow many threads can I throw at a problem?
22:13:16drmeisterDo I need to write some tricky code with a thread queue or can I just start one thread for each toplevel form and wait for them to all join?
22:19:49drmeisterMartin says I can throw as many threads at the problem as I want.
22:28:55Shinmeradepends on what you're doing? Threads can be an expensive resource, and pooling is often a good idea.
22:29:44ShinmeraIf lparallel runs on Clasp you could use that, I suppose
22:47:33drmeisterI'm conflating what happens with fork and what happens when I launch a thread.
22:47:36Shinmerathreads have their own stack, so you need to use a closure.
23:00:59drmeisterbordeaux-threads:*default-special-bindings* - it's an alist of (symbol . value) that is bound at the start of the thread - I'll use that.
23:01:09drmeisterI guess that is what this is for.
23:28:43drmeisterCrap - I should know this - but the neurons have been paved over.
23:29:11drmeisterHow do I pass values to a thread?
23:29:50drmeisterThe *default-special-bindings* won't work - because it evaluates in the thread - and the special variables will revert to their global values.
23:30:29drmeisterThe forms in the *default-special-bindings* evaluate in the thread.
23:35:53drmeisterGot it - global and lexical bindings are passed - but not locally bound special variable bindings.