Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用std::map<;Obj*,int>;在TThread的对象中,会导致访问冲突_C++_Multithreading_Stdmap_Tthread - Fatal编程技术网

C++ 使用std::map<;Obj*,int>;在TThread的对象中,会导致访问冲突

C++ 使用std::map<;Obj*,int>;在TThread的对象中,会导致访问冲突,c++,multithreading,stdmap,tthread,C++,Multithreading,Stdmap,Tthread,我正在尝试使用TThreads并行化一个仿真模型。每个模型对象都包括一个std::map。只要只有一个线程在运行,模型就可以正常运行。如果第二个线程启动,我将在第一个线程的模型映射中获得访问冲突 为了测试映射是否真的是问题所在,我将其替换为std::vector。这很好,但速度要慢得多,因为每次我试图找到一个特定的obj*时,我都必须遍历整个向量 我知道不可能为映射保留内存,因此我不知道如何在没有访问冲突的情况下使用映射。是否在线程之间共享映射?您是否有防止同时访问映射的保护措施(例如互斥或某种

我正在尝试使用TThreads并行化一个仿真模型。每个模型对象都包括一个
std::map
。只要只有一个线程在运行,模型就可以正常运行。如果第二个线程启动,我将在第一个线程的模型映射中获得访问冲突

为了测试映射是否真的是问题所在,我将其替换为
std::vector
。这很好,但速度要慢得多,因为每次我试图找到一个特定的
obj*
时,我都必须遍历整个向量


我知道不可能为映射保留内存,因此我不知道如何在没有访问冲突的情况下使用映射。

是否在线程之间共享映射?您是否有防止同时访问映射的保护措施(例如互斥或某种锁)?否映射不共享。每个线程都有自己的映射。这些非共享映射指向的对象是否在线程之间共享?否,线程之间不共享内存。所有线程都有一个完全独立运行的模型。地图中的对象也是模型的一部分。然后你必须尝试创建一个模型来向我们展示。否则这个问题是不可能回答的,我们所能给你的只是狡猾的猜测(大部分是错误的)。如果你还没有完成,那么请(如果你已经读过,那么请再读一遍)。你在线程之间共享地图吗?您是否有防止同时访问映射的保护措施(例如互斥或某种锁)?否映射不共享。每个线程都有自己的映射。这些非共享映射指向的对象是否在线程之间共享?否,线程之间不共享内存。所有线程都有一个完全独立运行的模型。地图中的对象也是模型的一部分。然后你必须尝试创建一个模型来向我们展示。否则这个问题是不可能回答的,我们所能给你的只是狡猾的猜测(大部分是错误的)。如果你还没有读过,请再读一遍。