Re: threading models [RE: [Music Bits] Pansy Division.]

Gregory Alan Bolcer (
Mon, 17 Aug 1998 09:34:05 -0700

> No, not built in. And yet, amazingly enough, it still has a better model
> than Ada. :-)
> More seriously, in the C/C++ world, pretty much everyone uses a
> POSIX-threads-like model, where you can create a new thread running a
> specified function with a (void*) argument, and various synchronization
> objects are available to the threads (recursive and non-recursive locks,
> etc.). It's a nice simple model to implement, yet powerful enough to build
> monitors, rendezvous, etc. on top of.

Ah, I knew I'd get a response!

There's basically two concurrency models, threading and tasking.
Threading says that the level of abstruction for concurrency is usually
below the level of abstraction for the object level, tasking says
that it is above. A task is basically one or more
objects with a thread of control. A thread is basically one
or more execution paths through an object. They overlap when
you have a one-to-one mapping from threads to objects. Tasking
has build in synchronization semantics, threading does not.

Then there's also the whole other camp who say that concurrency
should't even have to be explicit.

Come on Joe. You work for Microsoft who claims to know the pulse of the
90% of all developer's. Please tell us if 97% of them can recognize
a deadlock or livelock situation.