Threading is hard in any language. And what is worse, when it goes wrong, it usually goes wrong in a very bad way. Because of this, programmers either avoid threading completely (and refer to it as the spawn of the devil) or spend a LOT of time making sure that everything is perfect. Fortunately, Apple has made a lot of progress in OS X 10.5 Leopard. NSThread itself has received a number of very u