"Thread" is a buzzword, fork isn't. Of course,
fork has clocked over 30 years of mileage, while
threads are the new kid on the block.
Threads have been invented and reinvented. So we have kernel
threads, green threads, posix threads, interpreter threads,
etc. It's just like Java, it never works the same twice.
fork is just fork, you just pull
out your Stevens or other book from your bookshelf, and it
just works reliably, with a clear and simple interface.
Inferior OSses don't have fork.
Threads mangle each others variables by default, and you need
to explicitely guard yourself against that from happening.
(Note that just *looking* at a variable can mean Perl changes
the variable under the hood - it's not a safe operation.)
fork is safe for your data, you need to explicitely
share data (using shared memory for instance).
Compared to a select() loop (as provided by for instance POE),
threads give you underterministic behaviour, while a select loop
gives you deterministic behaviour.
Do you know which thread is going to handle a send signal? On any
signal capable OS? I know when I fork().
Snippets of code should be wrapped in
<code> tags not<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).