当前位置: 代码迷 >> VC/MFC >> osg 多线程有关问题
  详细解决方案

osg 多线程有关问题

热度:117   发布时间:2016-05-02 03:45:25.0
osg 多线程问题
我在MFC的InitialUpdate中有如下代码:
void CWindow3D::OnInitialUpdate()
{
CView::OnInitialUpdate();

mOSG->InitOSG( _T("cow.osg") );
root = new osg::Group();

m_model.InitModel( root.get() );

osgUtil::Optimizer optimizer;
optimizer.optimize(root.get());

osgViewer::Viewer * viewer = mOSG->getViewer();
viewer->setSceneData(root.get());
viewer->addEventHandler(new osgUserDragger::osgUserPickDragHandler(root.get()));

mThreadHandle = (HANDLE)_beginthread( &cOSG::Render, 0, mOSG );
}
之后我在一个DLL中读取数据并将这些数据加载到root中,root作为一个成员变量传给了DLL,在root下加载了子节点。
void CWindow3D::OnAddData()
{
m_model.CreateStickersFromFile( "Fault_6_pl1_XY" );
m_model.CreateStickersFromFile( "Fault_6_pl2_XY" );
m_model.CreateStickersFromFile( "Fault_6_pl3_XY" );
m_model.CreateStickersFromFile( "Fault_6_pl4_XY" );
}
其中m_model为一个管理对象,里面有一个root指针,CreateStickersFromFile将创建一个Geode对象,添加到root之下。

问题:当运行时,加载对象有时就会崩溃,不时每次都崩溃。提示信息是vector iterator not incrementable.
拜托哪位大神帮帮忙搞定一下。


------解决思路----------------------
错误看上去是vector的迭代器操作不对
  相关解决方案