map find 是线程安全的吗
测试环境gcc4.8.2
iterator find ( const key_type& k );
const_iterator find ( const key_type& k ) const;
Unordered_map有两个对应的find函数 我推断第二个是安全的,第一个经过实测不是线程安全
auto iter = _map.find(key)
在openmp多线程环境下出core,感谢glog的错误信息输出
*** Aborted at 1412933723 (unix time) try "date -d @1412933723" if you are using GNU date ***
PC: @ 0x8d1d65 std::equal_to<>::operator()()
*** SIGSEGV (@0x8) received by PID 3216 (TID 0x7f7c3902d700) from PID 8; stack trace: ***
@ 0x7f7c4b769150 (unknown)
@ 0x8d1d65 std::equal_to<>::operator()()
@ 0x8e231b std::__detail::_Equal_helper<>::_S_equals()
@ 0x8dbbb0 std::__detail::_Hashtable_base<>::_M_equals()
@ 0x8d1e63 std::_Hashtable<>::_M_find_before_node()
@ 0x8c432e std::_Hashtable<>::_M_find_node()
@ 0x8b2bca std::_Hashtable<>::find()
@ 0x89adcd std::unordered_map<>::find()
@ 0x87af21 gezi::LruMap<>::find()
@ 0x85c6ab gezi::TimerMap<>::count()
@ 0x7ee705 run()
@ 0x7f1893 _Z3runv._omp_fn.3
@ 0x7f7c4a65641a gomp_thread_start
@ 0x7f7c4b7611c1 start_thread
@ 0x7f7c49b6c0ad __clone
Segmentation fault
由于我可能需要修改iter->second,因此不能改用const_iterator
增加
iterator iter;
#pragma omp critical
iter = _map.find(key);
程序运行正常了
map find 是线程安全的吗的更多相关文章
- 关于List Map Set的线程安全的问题
常见的ArrayList LinkedList HashMap TreeMap LinkedHashMap HashSet TreeSet LinkedHashSet 都是线程不安全的.如果要使用 ...
- List Map Set的线程安全
常见的ArrayList LinkedList HashMap TreeMap LinkedHashMap HashSet TreeSet LinkedHashSet 都是线程不安全的.如果要使用 ...
- map线程
来看看map线程到底是如何运行的 很早就知道一个map是一个线程,以后有可能改成一个map一个进程,那就先来看看一个map一个线程是如何运作的 其实刚开始整个服务器就是两个线程,但发现这样服务器支持的 ...
- 几种线程安全的Map解析
转载自 面试必问-几种线程安全的Map解析 HashMap线程安全的吗? Java中平时用的最多的Map集合就是HashMap了,它是线程不安全的. 看下面两个场景: 1.当用在方法内的局部变量时,局 ...
- ThreadLocal实现方式&使用介绍—无锁化线程封闭
原文出处: xieyu_zy 虽然现在可以说很多程序员会用ThreadLocal,但是我相信大多数程序员还不知道ThreadLocal,而使用ThreadLocal的程序员大多只是知道其然而不知其所以 ...
- Java 线程池
系统启动一个线程的成本是比较高的,因为它涉及到与操作系统的交互,使用线程池的好处是提高性能,当系统中包含大量并发的线程时,会导致系统性能剧烈下降,甚至导致JVM崩溃,而线程池的最大线程数参数可以控制系 ...
- Java线程与并发库高级应用-线程范围内共享数据ThreadLocal类
1.线程范围内共享变量 1.1 前奏: 使用一个Map来实现线程范围内共享变量 public class ThreadScopeShareData { static Map<Thread, In ...
- Java Map 简介
AbstractMap, Attributes, AuthProvider, ConcurrentHashMap, ConcurrentSkipListMap, EnumMap, HashMap, H ...
- Java Map 集合类简介
作者:Jack Shirazi 了解最常用的集合类型之一 Map 的基础知识以及如何针对您应用程序特有的数据优化 Map. 本文相关下载: · Jack 的 HashMap 测试 · Oracle ...
随机推荐
- [POJ3295]Tautology
[POJ3295]Tautology 试题描述 WFF 'N PROOF is a logic game played with dice. Each die has six faces repres ...
- 在Android工程中运行main函数
在main函数中右键 --> Run As --> Run Configurations.. Java Application中的类 --> Classpath --> Boo ...
- linux操作系统flash player问题--ubuntu
adobe公司停止了对linux系统的flash player的更新,这导致很多网页视频不能够通过浏览器观看,很是不爽! 还好,给用户留下了一点点希望,那便是chrome浏览器. 谷歌浏览器,有一款插 ...
- C++ 输出调试的一些技巧
主要利用了宏和stderr... #define enable_debug #ifdef enable_debug FILL some macros/functions here #else /// ...
- Eclipse J2EE LUNA 部署tomcat
- Python分割list
对于一个很大的列表,例如有超过一万个元素的列表,假如需要对列表中的每一个元素都进行一个复杂且耗时的计算,用单线程处理起来会很慢,这时有必要利用多线程进行处理,处理之前首先需要对大的列表进行分割,分割成 ...
- 用ConfigParser模块读写配置文件——Python
对于功能较多.考虑用户体验的程序,配置功能是必不可少的,如何存储程序的各种配置? 1)可以用全局变量,不过全局变量具有易失性,程序崩溃或者关闭之后配置就没了,再者配置太多,将变量分配到哪里也是需要考虑 ...
- 【leetcode】Edit Distance
Edit Distance Given two words word1 and word2, find the minimum number of steps required to convert ...
- C#错误之 System.Threading.ThreadAbortException:正在中止线程
参考:http://www.cnblogs.com/chendaoyin/archive/2013/06/27/3159211.html 1.开启一个子线程 //开启一个子线程,子线程调用方法 Met ...
- struts2 中属性驱动(其实就是struts2 action 中处理 request 的参数【old 方式servlet api 封装数据到javabean中(or beanutils)】),这里属性驱动是新方式
1.属性驱动 a\ 一般的set public class UserAction extends ActionSupport { private String username; private S ...