Hi Robert,

        
It has some example of the use of osg::Operation and osg::OperationQueue? 

Thanks,
Ronald.


> Hi Ronald,
> 
> On 8/6/07, ronaldss <[EMAIL PROTECTED]> wrote:
> > I need to up to date the scene of graph through several threads, therefore 
> > he would like to know if the OSG implements some type of synchronization of 
> > threads.
> > Where I can find examples?
> 
> The OSG is designed to support single threaded update, and
> multi-threaded rendering.  It does not support multi-threaded update.
> 
> Supporting general multi-threaded update would requires mutexing of
> most operations on the scene graph, this would utterly destroy
> performance.  It'd also make it a really awkward to write, extended
> and use.  All in all it would be a pretty crappy scene graph, all for
> a type of usage that is very specialized.
> 
> So.. where does leave you...  we'll not totally high and dry, one can
> implement high  level control over access to the scene graph, this is
> non longer a scene graph control though, rather an application centric
> control.  What you'll need to do is have a single mutex that each
> thread acquires before it can do any read/write ops on the scene
> graph.  The main frame loop will have to use this mutex too, so that
> when it runs the frame() it aquires the lock so that no one else can
> modifiy it which its doing its update and rendering traversals.
> 
> Now if you write you code carefully, acquire the lock before writing,
> and release it, then you should be able to get multi-thread update
> working safely.  Performance won't be ideal, but it at least should
> work.
> 
> Another way to tackle it is rather than using a mutex and let each
> thread acquire it and the modify the scene graph itself, is to do all
> the operations via an subclassing from osg::Operation, then placing
> these operations into a osg::OperationQueue that gets flushed on each
> new frame.  The osg::OperationQueue itself can be read/written to
> multi-threaded so can happily handle the usage model you are looking
> for.  The upside is that performance will be good, no long waits to
> acquire mutexes, the downside is that the operations are no longer
> synchronous w.r.t calling threads.
> 
> Robert.
> _______________________________________________
> osg-users mailing list
> [email protected]
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
> 

_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to