The programs in this directory are examples to demonstrate how to use
the omnithread class library.

1. diner       - a solution to the dining philosophers problem.
2. prodcons    - demonstrates the use of condition variables for signalling
                 between two "producer" threads and three "consumer" threads.
                 Also demonstrates the use of timed waits.
3. thrspecdata - demonstrates the use of thread-specific data by having a
                 class which inherits from omni_thread.  Also demonstrates 
                 joining with a thread which returns a value.
4. prio        - Thread priorities test. See the comments at the beginning of
                 the program source.

To Compile
----------

+ On Unix

  - Edit ../../../config/config.mk to select the appropriate platform.
  - You must use GNUmake.
  - Do 'make all' in this directory. When make finishes, the binaries are
    compiled. 

+ On NT and Windows 95

  - Make sure that you <Top>\bin\x86_win32 in you PATH environment variable.
  - Do 'nmake /f dir.mak' in this directory. When nmake finishes, the binaries
    are compiled.


To Run The Programs
-------------------

- On unix, since the shared libraries libomniORB3.so and libomnithread.so
  are not in the directories searched by the dynamic loader by default, you
  must add the library directory to the search path. 

  On Solaris 2.5
     $ LD_LIBRARY_PATH=<absolute pathname of ../../../lib/sun4_sosV_5.5>
     $ export LD_LIBRARY_PATH

- On NT, make sure that you <Top>\bin\x86_win32 in you PATH environment 
  variable.

