【发布时间】:2017-12-03 13:31:23
【问题描述】:
在C++ 11 及以上有什么优点或缺点,当像这样直接将std::thread 存储为类成员时:
std::thread my_thread;
与像这样将std::shared_ptr 或std::unique_ptr 存储到线程相反:
std::shared_ptr<std::thread> my_thread_ptr;
是否有任何代码选项比其他代码选项更好?或者没关系,只是处理线程对象的两种不同方式。
【问题讨论】:
-
优点或缺点不是很明显吗?看看
thread的特殊成员函数做了什么,然后决定这是否是你想要的外部类的行为。 -
为什么要将它存储在
std::shared_ptr或std::unique_ptr中?没看明白,std::thread只是包装了实现定义的线程句柄。 -
这似乎是一个列表问题。而是针对具体案例提出一些具体问题并解释您的限制条件。
-
@NicolBolas 我不是在谈论形成外部类。我的意思是 - 有一个类需要线程在其对象的生命周期内完全活着,但不包装线程。所以线程对象是一个成员。现在我的问题是“当线程对象是类成员时,将其存储在智能指针中是否有优势”。不知道你对这个简单的问题有什么误解
标签: c++ c++11 c++14 shared-ptr stdthread