It is impossible to use omniORB library and OpenMP together on Irix platform because omniORB only uses pthread to support multi-threading, but applications using OpenMP on Irix platform (compiled with "-mp") must use SGI's SPROC multi-threading scheme.  If an application with both OpenMP and pthread, it will hang up.

       This is a patch solving this problem so that both the functionalities of CORBA communication and OpenMP parallel computing can be implemented within one application. The idea is writing pseudo omni_thread functions to "cheat" the other modules of omniORB.  these  pseudo functions have the same names but are implemented by SPROC's methods, rather than pthread's.

       To use this patch:

       1. Copy omniORB's source code in a new directory.

       2. Replace <OMNI_home_dir>/src/lib/omnithread/posix.cc by this posix.cc .

       3. Replace <OMNI_home_dir>/include/omnithread.h by this omnithread.h .

       4. Remove -lpthread in <OMNI_home_dir>/mk/platform/<the platform file>. Here is one reference.

       5. Compile this SPORC version omniORB.

       Current code was test under omniORB version 3.0.4. Any comments are appreciated : lisong@iastate.edu