Archie Cobbs wrote:
IMHO using POSIX threads is the only "right" answer for a multi-platform
JVM. You have no other choice except to leave it up to the specific
platform to then implement POSIX threads efficiently.
For example, on Linux where each POSIX thread is a cloned process, it's
Linux's fault (not the JVM's fault) if that doesn't scale well. For
example,
other OS's don't have such heavyweight threads. FreeBSD's KSE's are an
example of a better tradeoff using M:N user:kernel threading.
I agree with you. I think it's always the case that Java threads are
going to be better than POSIX threads though, as with some commodity
processors, in particular I'm thinking of Cell, you no longer have a
shared memory model. In such a situation you could use a distributed
JVM, such as JESSICA2 - that's built on top of Kaffe :-). So whilst
implementing a JVM assuming POSIX threads is a good idea to run on many
platforms, there are legitimate reasons why you may want to be flexible
and not assume a 1-to-1 mapping of Java threads to POSIX threads, and of
course avoid native code.
Regards,
Ian