C++ 使用哪种容器和锁定机构?

C++ 使用哪种容器和锁定机构?,c++,multithreading,hashmap,C++,Multithreading,Hashmap,我有两个线程,第一个玩家勾选,第二个渲染。 两个线程未同步。 我需要在第一个线程中收集信息,并在第二个线程中呈现它。 在tick thread中,我使用2个循环收集信息。 每次在勾选线程中输入代码时,所有渲染目标列表都应重置。 我从2个循环中收集这些目标,列表必须是关联的,但由于渲染的原因,速度非常快 void TickThread() { g_pLock->Enter(); //EnterCriticalSection g_List.clear(); //clear list

我有两个线程,第一个玩家勾选,第二个渲染。 两个线程未同步。 我需要在第一个线程中收集信息,并在第二个线程中呈现它。 在tick thread中,我使用2个循环收集信息。 每次在勾选线程中输入代码时,所有渲染目标列表都应重置。 我从2个循环中收集这些目标,列表必须是关联的,但由于渲染的原因,速度非常快

void TickThread()
{
   g_pLock->Enter(); //EnterCriticalSection
   g_List.clear(); //clear list of targets
   for (obj1 : g_Objects1) //first loop of objects
   {
     if (obj1 && true) // here's selection
        g_List[obj1->uid] = obj1; //create
   }
   for (obj2 : g_Objects2) //another loop of objects
   {
     if (obj2 && true) // here's selection
        g_List[obj2->uid] = obj2; //replace if already exists or create
   }
   g_pLock->Leave(); //code must be fast enough, otherwise it will lock rendering
}

void RenderThread()
{
   g_pLock->Enter(); //EnterCriticalSection
   for (obj : g_List) //iterate over whole list
   {
      //render obj.first obj.second
   }
   g_pLock->Leave();
}
也许我需要一些hashmap,而且对象的最大计数是64
我应该使用哪个容器,它应该非常快,还要记住,我知道目标的最大数量,所以可以在开始时分配内存? 还有什么用于锁定? 我不确定std::map是个好主意。。。
谢谢

您可以使用std::map,因为它们速度很快。尺寸是灵活的,你可以用它来扩展未来。同样如问题中所述,线程应该同步。

为什么这两个线程是同步的,为什么它们不同步,而事实上它们之间存在顺序依赖关系?这不是我的,我只是将它们两者挂钩。。。你的问题是什么?我应该使用哪个容器,它应该非常快,还要记住,我知道目标的最大数量,所以可以在开始时分配内存?请回答您的问题,以便问题清楚