我对C++上的容器的内存分配有一个问题。C++容器的内存分配
看看多线程应用程序的伪代码(假设它是在C++中)。我在main方法中声明了矢量对象。然后我运行一个线程并将此对象传递给线程。该线程在另一个处理器中运行。现在,我将100000个元素插入到矢量中。
typedef struct myType
{
int a;
int b;
}myType;
ThreadRoutine()
{
Run Thread in processor P;
insert 1000000 elements into myTypeObject
}
int main()
{
std::vector<myType> myTypeObject;
CALLTHREAD and pass myTypeObject
}
我想知道的内存将被分配给10万组的元素: - 从主本身 - 从线程
的原因,因为我要运行请问这是线程在不同的处理器中。而我的机器是NUMA机器。所以如果内存是从线程分配的,它将在线程的本地内存中。但是如果内存是从main分配的,它将从主线程的本地内存库分配。
根据我的直觉,我会说内存只在线程中分配。请让我知道你的想法。
请注意,在C++中,您可以只写'struct myType {...};'。 –
您确定标准分配器仅为特定线程分配内存吗?因为这听起来不正常,而且简要地看一下“NUMA是什么”,这让我觉得这不是NUMA正常工作的方式。 –
如果我对NUMA有所了解,我会认为最好的答案是编写一个自定义分配器,并让该向量使用分配器。那么你永远不必担心哪个线程持有它。或者其他的东西。 –