飞机模型驱动问题,我用了多线程解决,但效果不好,请高手指点啊,拜托了

littlefat_sun 2015-11-13 04:07:44
实时接收模拟器发过来的包含两个批次的飞机数据,里面含有飞机的位置等信息,怎样在程序中实时根据此数据更新这两个批次的飞机的位置,是开启两个线程吗?
//接收航迹数据,驱动飞机

//TrackLineDataStructure接收到的数据结构体
void MyClass::ReceivedTrackData(TrackLineDataStructure* TrackLine)
{
//批次号
this->mBatch=TrackLine->nBatch;
if (mBatch>0)
{
bool Isexit=false;
Isexit=mAircraftList.contains(mBatch);
if(!Isexit)
{
//把批次号加入到集合中
this->mAircraftList.push_back(this->mBatch);
//AircraftMgr为飞机管理器继承自 CThread类,再此类中可以更新飞机位置,计算姿态,绘制轨迹线
//两个批次的飞机公用这些
mAircraftMgr=new AircraftMgr(this->mBatch, mpUCtrl->getUControl());
//mAircraft_Map为存储不同批次的对象的列表
mAircraft_Map.insert(hash_map<ushort,AircraftMgr*>::value_type(this->mBatch,mAircraftMgr));
}
hash_map<ushort,AircraftMgr*>::iterator it;
//从列表中查找接收新接收到的批次号
it=mAircraft_Map.find(mBatch);
if (it==mAircraft_Map.end()/*this->mBatch==3040*/)
{
return;
}
else
{

AircraftMgr* temAir=NULL;
temAir=dynamic_cast<AircraftMgr*>(it->second);
if (temAir!=NULL)
{
temAir->setTraBatch(mBatch);
//用来进行插值
temAir->setTraDataList(traPntToList(TrackLine));
if (!(temAir->isRunning()))
{
temAir->start();
}
}
}
}
}

这样写对吗?
AircraftMgr继承自Thread类,是不是新new了一个他的对象,就是新开启了一个新的线程啊?
...全文
111 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2015-11-13
  • 打赏
  • 举报
回复
是。我猜。
stephen_csdn 2015-11-13
  • 打赏
  • 举报
回复
你可以不用每次接受到都new一个线程啊,管理一个独立线程去处理这个事情

3,882

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧