Hi Robert,

i fixed the deadlock using a separate mutex on the updateList in Terrain. 
Another option would be using a ReadWriteMutex, so the read operations 
(traversal and get) don't block each other.

I think there are also some not thread safe operations in the code, e.g. the 
Terrain::getTile(const TileID& tileID) returns a  TerrainTile* which could be 
deleted in another thread - maybe this should be changed to a osg::ref<>.

Or the deleting operation should be moved to a location where no other database 
threads run and also the viewer thread is not running.

Regards,
Andreas

------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=27278#27278




Attachments: 
http://forum.openscenegraph.org//files/terrain_550.zip


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

Reply via email to