Coda File System

Re: LWPs in Coda and native platform threads

From: Robert Watson <robert_at_cyrus.watson.org>
Date: Mon, 27 Jul 1998 08:27:53 -0400 (EDT)
On Sun, 26 Jul 1998, Jim Doyle wrote:

> > This would be quite a bit of work, but the results would be quite good --
> > especially if in the future there are ports to Java, etc, where threads
> > are more common-place than present-day UNIX.
> 
> Funny. I see Pthreads as being "already everywhere". These are the
> platforms that I know of that come with Pthreads, including thread-safe
> libraries:

Rather than the availability of threads, I meant more the use of threads
-- under Java, threads are an inherrent part of program design -- if you
use AWT, you use threads.  If you use networking, you use threads.  In
many (most?) UNIXes, threads appear to be an afterthought.  Consider the
semantics of fork() -- Solaris has two versions that describe different
possible desired semantics (fork only the current thread active, or fork
the entire process?  What about signal delivery to other threads?  How
should lock requests be handled in the child?  Pthreads does not address
all issues involved in threading, so you can still hit on ambiguous
cross-platform issues).  The traditional concept of "fork" does not mix
well with user-land threading.  Java support classes, on the other hand,
were really designed with threading in mind. 

Threading is widely available under UNIX -- I just suspect it is not as
widely used as in other architectures.

On the other hand, I'd love to see pthreads support in Coda, I just
suspect that fixing the current-day concurrency problems is not going to
be an easy task.

I believe RPC2 current can handle preemptive multi-threading by virtue of
a single critical section contaning all RPC2 code; there is a preemption
package in LWP that RPC2 supposedly can coexist with.  However, I have not
actually confirmed that this works.  

Does Coda currently use blocking DNS calls?  I suspect it just calls the
libc gethostbyname/etc, which (without using native threading) can result
in considerable blocking.

One key issue in going to native threads might be whether RVM also can
handle preemption.

  Robert N Watson 

Carnegie Mellon University            http://www.cmu.edu/
TIS Labs at Network Associates, Inc.  http://www.tis.com/
SafePort Network Services             http://www.safeport.com/
robert@fledge.watson.org              http://www.watson.org/~robert/
Received on 1998-07-27 08:28:53