"John van V." <john_van_v / yahoo.com> wrote:
>
>I really appreciate reading this "thread"
>
> > It doesn't depends on whether threading is implemented in kernel,
> > which relatively heavy weight, or user level library realizing very
> > light weight and optimized for ultra fine grain threads like stack
> > threads.
>
>There was a recent copy of Java on Linux from the Java developers journal.
>I only mention this because Ruby is developed on Linux and is not (yet??)
>ported to Sun.  Linux threads are heavy weight to the extreme, they are 
>just
>disguised processes.  The Sun model is LWP internal to each process (of
>course).  Solaris, btw, will be open sourced pretty soon (or already is)

First of all Ruby should run just fine on Sun.  If
you have trouble compiling it, please report back
any errors.

Secondly don't believe everything you read.  Linux
may use kernel threads, but it switches threads faster
than Solaris does.  And nothing stops a user-level
library from doing an LWP implementation.  (But note
that Solaris allows you to have more threads, and
has much better debugging facilities for threads.  I
suspect that Linux 2.4 massively raised the number of
threads you can have, but does little or nothing for
the debuggability issue.)

Thirdly Sun not going open source, even though they
are trying to make it sound like they are.  See
http://www.zdnet.com/sp/stories/news/0,4538,2428184,00.html
for some details.

>Many dont like multithreading, and I have yet to write in it, but I would 
>very
>much like to.  The primary reason would be to share complex structures 
>between
>server connections w/o the bother of serializing and locking shared memory.

If you use multi-threading and think it does not require
locking, you will be burned very, very badly.

>From the administrative point of view, multiprocessing is very controllable
>whereas multithreading presents a black box.

There is evidence that multi-threading causes limits to
scalability as well.  The easiest way to scale is a
cluster, and clustering (NUMA, etc) is much easier to
get working well when things explicitly share very
little.

OTOH if the kernel is aware of threads (either with
kernel threads or LWP

Cheers,
Ben

PS I find it interesting in the extreme that Sun first
added a lot of support for multithreading to their OS,
then came out with Java, a language touted for being
very portable which couldn't be used without massive
multi-threading.  Java benchmarks unsurprisingly did
much better on Sun's OS than on many other forms of
Unix...
_________________________________________________________________
Get your FREE download of MSN Explorer at http://explorer.msn.com