|
本帖最后由 zealotsparc 于 2011-7-11 21:28 编辑
要实现的是飞机飞行轨迹的显示。
因此,于是设计了如下类
- class TrackDrawable : public osg::Drawable
- {
- //...
- public:
- virtual void drawImplentation(osg::RenderInfo& renderInfo) const
- {
- //..
- // 使用_arPoints中的数据绘制轨迹
- }
- //...
- void pushPlanePositionAndAttitude(osg::Vec3 position,osg::Vec3 attitude)
- {
- // 当飞机位置姿态更新时向_arPoints中添加新的数据
- }
- protected:
- osg::ref_ptr<osg::Vec3Array> _arPoints;
- }
复制代码
其中,pushPlanePositionAndAttitude是在飞行解算线程中执行的。由于pushPlanePositionAndAttitude和drawImplentation都需要访问_arPoints,在某些情况下如果没有进行线程同步将会出现错误,那么如何在pushPlanePositionAndAttitude中进行线程同步以避免pushPlanePositionAndAttitude和drawImplentation同时访问_arPoints呢? |
|