Perhaps a possible approach if you don't plan on doing callbacks or things from the Horde scene graph and you manage all transform-related interactions in your game logic thread, you could perhaps double-buffer all your transforms into a list, then wrap that list into a mutex lock and feed Horde's scene graph on the Horde thread.
This is kind of what I'm planning. I'm using my Go implementation
, and Go has some nice concurrency primatives. I plan on queuing up all of transformations ( or probably easier all of my calls into the horde3d api) from different threads, and just apply them on one thread when all of my Go channels return.
So all of my horde3d interfactions will be single threaded, but everything else will be multi-threaded. So I could be calculating my A* path for my AI in one thread, and the Bullet physics call in another thread, and when they complete both transformations will be applied in order to the horde3d API call.
That's the idea at least. We'll see.