C++ でのコンテナのメモリ割り当てについて質問があります。
マルチスレッド アプリケーションの疑似コードを見てください (C++ であると仮定します)。main メソッドで vector オブジェクトを宣言します。次に、スレッドを実行し、このオブジェクトをスレッドに渡します。スレッドは別のプロセッサで実行されます。ここで、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
}
100000 個の要素にメモリが割り当てられる場所を知りたい: -メイン自体から -スレッドから
これを尋ねる理由は、別のプロセッサでスレッドを実行したいからです。私のマシンは NUMA マシンです。そのため、メモリがスレッドから割り当てられた場合、それはスレッドのローカル メモリ バンクになります。ただし、メモリがメインから割り当てられる場合は、メイン スレッドのローカル メモリ バンクから割り当てられます。
私の直感では、メモリはスレッドにのみ割り当てられていると言えます。考えを教えてください。