各スレッドは、'insert' 関数を使用して (多くても 1 回) オブジェクトをコンテナーに挿入できます。その後、スレッドは「get」関数を使用してこのオブジェクトにアクセスしようとする場合があります。したがって、同じスレッドで使用された場合、'insert' と 'get' の間に競合はありません。ただし、別のスレッドが「get」を呼び出している間に、別のスレッドが独自のオブジェクトを挿入しようとする場合があります。
この状況で同期方法を必要としないコンテナーが必要です。
スレッドの数は、実行ごとに大幅に異なる場合があります。
class Object;
class Container<Object>;
Container<Object> g_container;
void insert(int threadId)
{
ScopedLock<Mutex> lock(insertMutex);
Object obj;
g_container[threadId] = obj;
}
Object get(int threadId)
{
return g_container[threadId];
}