假设我们有一个名为Sensor
的父类。移动机器人具有多种传感器(例如,凸轮,声纳,激光,GPS等)。每个传感器都有其自己的线程,并且为机器人提供了嘈杂的测量结果。我想模拟这种情况,因此代码可能如下所示
class Robot
{
update()
{
mSensor[i]->update();
}
Sensor *mSensor;
}
class Sensor
{
update();
}
class GPS : public Sensor
{
Thread mThread();
update();
}
class CAM : public Sensor
{
Thread mThread();
update();
}
在主要功能中,基本上我需要创建一个Robot对象,因此
#include "Robot.h"
int main()
{
Robot robo;
while( true ){
robot.update();
}
}
我的问题是如何仅通过终止robo对象来确保Sensor的线程被终止?我是否必须通过父析构函数中的某种循环遍历所有传感器对象?
最佳答案
首先,不要使用Sensor *mSensor;
,而是使用std::vector<std::unique_ptr<Sensor>>
。其次,每个传感器的析构函数应结束线程。然后,当Robot
类被破坏时,向量将被破坏,这将调用向量中所有传感器的析构函数。
关于c++ - 如何仅通过终止其父对象来退出子对象的独立线程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31615785/