COMP.PROGRAMMING.THREADS

		 
  This is the comp.programming.threads newsgroup, devoted to
any and all discussion concerning threads: specifications,
implementations, sample programs, brilliant untested ideas,
uncontrolled flaming, etc.  Very specifically it is intended
to be a place for discussion of ALL ilks, including all of
the definitions, POSIX threads, Solaris threads, OS/2
threads, Win32 threads, Java Threads, etc.

  (Because I worked for SunSoft, it is only natural that I
know a great deal more about Sun's activities than anyone
else's.  Anywhere you can fill in information is great.)



			A Bit of Background

  The basic concept of having a single address space with
multiple threads of control is not new.  The well-defined
and broadly available threads libraries are.  The term
"thread" as applied to programming was in use at IBM before 1970
and was coined by someone unknown to me.

  There are three primary sets of multithreading (MT)
libraries:

o The POSIX libraries (almost all UNIXes, plus
   VMS, AS400, and others?)

o  The Microsoft libraries (NT and OS/2).

o  Language dependent libraries: Java, Modula-3, Ada

  Microsoft built the OS/2 MT libraries back in when?,
handing them off to IBM when those companies split.  MS then
continued working with their MT work, eventually producing
the NT MT library.  It is very similar to the OS/2 library,
but not identical.

  The various UNIX companies worked on MT libraries for a
number of years, coming up with different implementations of
fairly similar designs.  They then got together and wrote
the POSIX specification which incorporated the best parts of
their combined work.  The POSIX spec was ratified June '95.

  I know that:

o DEC, Sun, HP, and SGI are currently shipping full Pthreads
  libraries.

o IBM is currently shipping full Pthreads with 4.3.1


  All of the libraries are based on the same paradigm, and
moving from OS/2 to NT to POSIX to Java is not a major conceptual
shift.  (It may be a h*** of a lot of WORK, but it's not a
different way of thinking.)

  The ever-so-popular Java language includes threads as an
integral part of the language.  It's actually implemented on
top of the native threads libraries for the respective
operating systems (initially built on "green threads", it's
going native).  It provides an OO-based interface to a
limited subset of the functionality.  Once again, it's based
on the same paradigm.

  In all implementations, a new thread is created by an
existing one, and is then completely independent, with no
sort of parent/child relationship.  Coordination between
different threads require a set of "synchronization
variables".  And ever-so-important: different threads may
run on different CPUs at the same time.  An MT program will
run correctly independent of the number of CPUs available --
on a multi-CPU machine the program will simply run faster
(Caveat Emptor).


  Threaded programs are not the most common thing in the
world (yet), but there are plenty of examples to prove the
value of the concept.  We know of several dozen ISVs
currently shipping MT applications on Solaris (See Case
Studies below).



				Books

  There are presently 17 books out on the subject.
My opinions of the books can be found at:

http://www.LambdaCS.com/cpt/books.html


				Courses

  Courses on multithreading are offered by:

Sun Customer Education
	training_seats@Sun.COM,    			(408) 276-3630
	(Regular classes at Sun in Mt. View and on-site classes)

Digital Customer Education

HP Customer Education

SGI Customer Education

IBM Customer Education

Lambda Computer Science 	(Bil Lewis)
	Bil LambdaCS.com 	http://www.LambdaCS.com
	(Traveling Seminars and on-site classes)

Phoenix Technologies 		(Chris Crenshaw) 
	phnxtech@attmail.com  				(908) 286-2118

Consultant			(Mark Staveley)
	marc@staveley.com

Init AB                		(Mats Löfström)
    	mla@init.se         http://www.init.se      	+46 8650 9700
	(Regular classes in Stockholm (and on-site?))

InterBit Ltd.						+972 3 7520676
	http://www.interbit.co.il/index.shtml

			***Anyone else?***



				Net Resources

  There are several WWW pages devoted to threads.  There are
at least two public domain MT packages, along with a number
of different MT products.

  There are *two* FAQs for comp.programming.threads and many
programming examples.  The first is a general FAQ, talking
about high-level concepts and basic questions.  The second
comprises the consolidated replies to specific questions,
many of which are very narrow and highly detailed.


Lambda Computer Science

  Other pages (all pointed to from the above) include:

sourceware.cygnus.com/pthreads-win32
  
MIT Public Pthreads by Chris Provenzano, runs on *many* OSs.
  
PART Public Pthreads (draft 6) by Frank Mueller, runs on SunOS and Solaris
  
PCthreads, User-level Public Pthreads by Mike Peterson for Linux
  
LinuxThreads, Kernel-level Public Pthreads by Xavier Leroy for Linux
  
LinuxThreads FAQ
  
Short Threads Tutorial from U Mass
  
Bibliography of several hundred papers, collected by Torsten Amundsen (U of Oslo)
  
IBM's Thread Page
  
SunSoft's Threads Page
  
The ACE Page, C++ communications package & Pthreads objects
  
C++ Pthreads synchronization objects
  
Modula-3


			Freeware Tools

  
TNFview allows you to look at the exact timing of different 
events (which you can set) in a program.

  
Proctool gives you a view of the high-level operations of 
processes and LWPs on Solaris.


  Finally, there's a small pile of other things on my web page, 
including all of the sample programs from my books and from the
courses I teach.

  Well, that's it in a nutshell.  MT is here to stay.  All
we have to do is to keep on top of the wave, and this
newsgroup is one way to do so!


-Bil Lewis

Lambda Computer Science
Menlo Park, Calif.  
May, 1998

=====================
Bil LambdaCS.com
Lambda Computer Science