C++ 在boost::thread_specific_ptr中使用STL容器(向量等)有任何限制吗

C++ 在boost::thread_specific_ptr中使用STL容器(向量等)有任何限制吗,c++,multithreading,boost,stl,C++,Multithreading,Boost,Stl,我目前正在从事一个项目,该项目需要每线程存储来缓存获取的数据。我正在研究解决方案的boost::thread_specific_ptr,但在以下方面我还不是很清楚: 进程地址空间中实际分配的线程指定的ptr指向的对象在哪里?是属于特殊细分市场,如bss、data还是其他细分市场?是否会对其进行保护,以便同一进程中的任何其他线程都无法检查对象所在的地址?如果它是一个特殊的内存段,那么在boost::thread_specific_ptr中使用STL容器是否会有危险,因为当添加更多数据时,它会自动调

我目前正在从事一个项目,该项目需要每线程存储来缓存获取的数据。我正在研究解决方案的boost::thread_specific_ptr,但在以下方面我还不是很清楚:

进程地址空间中实际分配的线程指定的ptr指向的对象在哪里?是属于特殊细分市场,如bss、data还是其他细分市场?是否会对其进行保护,以便同一进程中的任何其他线程都无法检查对象所在的地址?如果它是一个特殊的内存段,那么在boost::thread_specific_ptr中使用STL容器是否会有危险,因为当添加更多数据时,它会自动调整自身大小,直到跨越段边界


提前谢谢

线程本地指针依赖于平台,但是通过它存储的对象就在堆上

唯一真正线程本地的东西是指向它的指针,操作系统/运行时库将有一些与线程相关的存储来保存它们。这是一个实现细节,您不必担心它

如果您计划存储大量容器,请考虑存储包含(指针)它们的所有结构。


另外,要节约使用线程本地存储。在我的书中,依赖于它们的是一种设计气息。您可能只是需要进程隔离,而不是线程。

谢谢您的回复!所以说“通过它存储的对象就在堆上”,你的意思是如果我使用boost::thread_specific_ptr(std::vector)之类的东西,那么向量本身和它的内容都会在堆中,对吗?是的。(还有什么)。实际上,出于这个原因,它被称为
thread\u specific\u ptr