[LWN Logo]
To:	linux-kernel@vger.kernel.org
From:	torvalds@transmeta.com (Linus Torvalds)
Subject: Re: SCO: "thread creation is about a thousand times faster than
Date:	27 Aug 2000 22:38:24 -0700

In article <52C41B218DE28244B071A1B96DD474F60AD231@DC-SRVR1.dotcast.com>,
Marty Fouts  <marty@dotcast.com> wrote:
>I'm curious: what assumptions did we have about threads 15 years ago that
>turned out to be false?

Personal opinion, and it has nothing to do with "15 years ago" vs

The pthreads approach never got to a real framework for threads as real
entities.  To pthreads, a thread is a braindamaged stepchild of a
process, and cannot do anything on its own.  It's this drooling messy
thing that has no life without the parent process that wipes up after
it.  It has no spine. 

In short, threads are not proper citizens.  They are guest workers. 
Expendable.  Worthless.  They don't have a life of their own. 

Now, the notion of rfork/clone/sproc "variable-weight processes" is not
new per se.  But it's an important _notion_.  It basically says that
threads are _not_ the ugly drooling stepson that you really wouldn't
want to see at family re-unions. 

Suddenly, with rfork/clone/sproc, a thread is not just something that
you can prod in the right direction with the cattle prod of a random
collection of POSIX routines.  A thread is an Idea.  A Notion. 
Something worthy of a capital letter.  Something you can discuss in
mixed company. 

It's the difference between being useful and being Right.

It's hard to explain.  If you have a bent toward physics, it's the
difference between a practical experiment and the Unified Teory of
Everything. It's the difference between Galileo saying "everything falls
at the same speed" and Newton's "F = mMG/rē".

If you're religious, it's the difference between "It was a dark and
stormy night.." vs "Let there be Light!".

If you're into computers, it's the difference between Windows ("sure, it
works much of the time, and it looks pretty") and Unix ("everything is a
process or a file"). 

It's like an idea: there are mundane ideas ("hey, let's go out for pizza
and a beer") and there are big ideas ("I have a dream..").

The difference? The big idea leads to something larger than itself. It
makes people think about what the meaning of life is. It gives a
_direction_ for where things are supposed to go.

In contrast, a small idea leads to other small ideas (fifteen beers
later: "I know, let's drive past the police station and moon every cop
in the city!"). 

Ok. I'm overdoing it. But think of rfork/clone/sproc as a way to try to
come to grips with what it really means to be a thread. Be one with the
thread. Grok the threadedness - so that you can understand what is wrong
and what is right _without_ having to count every comma in a standards
draft that is 473 pages long.

In short, "pthreads" is a rough approximation of the theory of
magnetism.  While rfork/clone/sproc is Maxwell's equations.  One can
tell you how much force a magnet excerts on a charged particle in
motion.  The other one tries to explain how the universe works. 

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/