Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.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+安全吗+;如果没有插入且只有.find(),则多线程上的STL容器? 在C++中,如果您不插入,那么在不同的线程中同时使用STD::MAP还是STD::向量是否安全?引擎盖下不会发生内存更改或缓存。 < P>这是具体的实现,而不是标准的保证。 < P>当前的C++标准对线程主题没有什么可说的,因此没有解决这个问题。然而,特定C++标准库实现的文档应该覆盖它。_C++_Stl_Vector_Map - Fatal编程技术网

使用C+安全吗+;如果没有插入且只有.find(),则多线程上的STL容器? 在C++中,如果您不插入,那么在不同的线程中同时使用STD::MAP还是STD::向量是否安全?引擎盖下不会发生内存更改或缓存。 < P>这是具体的实现,而不是标准的保证。 < P>当前的C++标准对线程主题没有什么可说的,因此没有解决这个问题。然而,特定C++标准库实现的文档应该覆盖它。

使用C+安全吗+;如果没有插入且只有.find(),则多线程上的STL容器? 在C++中,如果您不插入,那么在不同的线程中同时使用STD::MAP还是STD::向量是否安全?引擎盖下不会发生内存更改或缓存。 < P>这是具体的实现,而不是标准的保证。 < P>当前的C++标准对线程主题没有什么可说的,因此没有解决这个问题。然而,特定C++标准库实现的文档应该覆盖它。,c++,stl,vector,map,C++,Stl,Vector,Map,您假设find方法在标准的所有实现中都不是有状态的。在C++中最好不要做假设。我认为SeriGM在实践中可能是正确的,但是我不能保证,我怀疑这不是我们可以指望的。”杰伊:原则上,容器可以推迟某些清理任务直到后来访问。仅仅因为容器是作为逻辑常量访问的,并不保证它不会在引擎盖下翻转一些位(以线程不安全的方式)。我认为在大多数情况下,您应该可以,但标准没有保证它,因为它没有提到线程,因此不能保证线程安全。由于这个事实,不能说它是安全的。一个更有用的问题是,它将在哪些实现上工作。对于标准没有保证的东西,

您假设find方法在标准的所有实现中都不是有状态的。在C++中最好不要做假设。我认为SeriGM在实践中可能是正确的,但是我不能保证,我怀疑这不是我们可以指望的。”杰伊:原则上,容器可以推迟某些清理任务直到后来访问。仅仅因为容器是作为逻辑常量访问的,并不保证它不会在引擎盖下翻转一些位(以线程不安全的方式)。我认为在大多数情况下,您应该可以,但标准没有保证它,因为它没有提到线程,因此不能保证线程安全。由于这个事实,不能说它是安全的。一个更有用的问题是,它将在哪些实现上工作。对于标准没有保证的东西,默认的假设应该是它不起作用。然后由程序员来证明它在他们特定的操作系统和编译器版本上可以工作。@KeithB:我不认为缺乏标准是一个非常有用的论点。有许多标准中没有的东西是完全合理的假设。我认为您可能想要寻找一个肯定的断言,即这种行为不是线程安全的,而不是没有断言意味着它不安全。来自VC++(Visual Studio 2008),指的是std容器:从多个线程读取单个对象是线程安全的。例如,给定一个对象A,同时从线程1和线程2读取A是安全的。