> Perhaps you could begin by explaining the problem you are going to solve, and 
> why your way is better.

For windows version of fg, actually there are 2 solutions:
- no threads
- pthreads-win32

pthreads-win32 is, for me, a hack to ease the porting of *nix code to
win32 and may not always be efficient.

However, in fg you seem to use openthreads. Since osg is needed for both
fg and sg, I thought you could use openthreads in sg too.

So I started looking at the threads code in sg and noticed you use
pthread for only one thing : SGGuard.

>From what I understood, the code

static SGMutex mutex;
SGGuard<SGMutex> locker(mutex);

does this :

- SGMutex constructor : calls pthread_mutex_init()
- SGGuard constructor : calls SGMutex.lock() (which calls
pthread_mutex_lock())
then
- SGGuard destructor : calls SGMutex.unlock() (which calls
pthread_mutex_unlock())
- SGMutex desctructor : calls pthread_mutex_destroy()

Looking at openthreads code, changing SGMutex to OpenThreads::Mutex does
this:

- OpenThreads::Mutex constructor : calls pthread_mutex_init()
- SGGuard constructor : now calls OpenThreads::Mutex.lock() (which calls
pthread_mutex_lock())
- SGGuard destructor : now calls OpenThreads::Mutex.unlock() (which
calls pthread_mutex_unlock())
- OpenThreads::Mutex destructor : calls pthread_mutex_destroy()

However, when compiling for win32, you will have specific win32 threads
managment calling EnterCriticalSection(), InterlockedExchange() etc
which should be more efficient.

So the effects are:
- Do not worry about threads portability and always use optimized code
from osg which seems a very active project.
- Do not worry about threads-enabled/threads-disabled code, just check
if openthreads is there.

Regards
Benoit


-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
Flightgear-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/flightgear-devel

Reply via email to