码迷,mamicode.com
首页 > 编程语言 > 详细

map find 是线程安全的吗

时间:2014-10-10 22:19:24      阅读:534      评论:0      收藏:0      [点我收藏+]

标签:style   color   io   ar   for   sp   art   on   log   

测试环境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 是线程安全的吗

标签:style   color   io   ar   for   sp   art   on   log   

原文地址:http://www.cnblogs.com/rocketfan/p/4017587.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!