On Microsoft Windows, Open Inventor uses the native Win32 thread and thread control functions. Windows itself is multithreaded and uses these functions, so no additional libraries need to be linked. Open Inventor applications should already be using the “ MultiThreaded DLL (Debug)” version of the C/C++ runtime library (msvcrt and msvcrtd in Visual C++ 6)
On Unix and Linux systems Open Inventor uses the standard pthreads library to create threads and synchronization objects (mutexes, etc.).
There are several coding issues, including:
On most systems:
You must call XThreadInit()before making any other X Windows calls (including Xt, Motif, GLX, etc). SoXt::threadInit()will make this call automatically, but if you don’t use SoXt , you must call it yourself.
On Sun Solaris systems:
You must also call SunGlxThreadInit()before making any GLX calls. SoXt::threadInit()will make this call automatically, but if you do not use SoXt , you must call it yourself.
On SGI Irix systems:
Please note that an executable may not use both pthreads and the old sproc call. FEI provides a “dummy” pthreads library to allow applications that use sproc to also use Open Inventor (without multiple thread support).
There are some compilation and linking issues, including:
Please see the Makefiles provided with the Open Inventor multithread examples. These Makefiles contain the correct compile and link options for each platform.