i have quite a bit of e-mail on this topic.  please let me get this
over once and for all:  crack.  multithreading.  no point.  got it?

there is no plausible reason for wanting to multithread crack5.
you might as well multithread your dog.

crack is batch-oriented.

crack runs for days and there is no benefit to making any of its
structures shared between processes, or run as a "lwp".

"crypt"/"des" gains nothing from multithreading without heavy magic
which isn't worth the effort.

now that crack5 is so much smaller and lighter (3Mb vs. 30Mb) there's
not even the benefit of sharing dictionaries between concurrent
processes, and moreover it'd actually slow things down quite
considerably (running processes in synch vs. asynch).

the only possible benefit for running crack in some threaded manner
might be in a o/s where access to extra processors is not granted
except to threads of a process running on the main processor - but i
know of no such o/s.

Now - on the *other* hand; there is a *lot* of point in massive,
coarse grained, parallel processing.  One process per CPU.  It works
wonders....
