一,使用智能指针
class AA{
public:
AA();
~AA();
void StartService();
void EndService();
private:
std::unique_ptr<std::thread> t1_;
std::unique_ptr<NAMESPACE::CalMqtt> Srv_Mqtt_;
};
AA::AA()
{
Srv_Mqtt_.reset(new CalMqtt(CLIENT_ID_SUB));
}
void AA::StartService()
{
LOG_INFO("Start Service.");
t1_.reset(new std::thread([this](){
//std::cout << "t1_" << std::this_thread::get_id() << std::endl;
Srv_Mqtt_->mqtt_running();
}));
}
二,使用实例化,实现相同的功能。
class AA{
public:
AA();
~AA();
void StartService();
void EndService();
private:
std::unique_ptr<std::thread> t1_;
NAMESPACE::CalMqtt aaa;
};
AA::AA()
{
}
void AA::StartService()
{
LOG_INFO("Start Service.");
t1_ = std::make_unique<std::thread>(&NAMESPACE::CalMqtt::mqtt_running,aaa);
}

本文介绍了一种使用智能指针管理线程的方法,并对比了两种不同的实现方式:一种是通过成员变量持有智能指针并创建独立的对象来运行服务;另一种则是直接实例化对象并在类内部调用其成员函数启动服务。
4435

被折叠的 条评论
为什么被折叠?



