stl map 中插入和查找是否线程安全,如何不安全,会出现什么情况?

「已注销」 2014-10-16 11:16:16
stl map 中插入和查找是否线程安全,如何不安全,会出现什么情况?
实例代码如下:
news_pool是一个static std::map变量
在一个线程中进行操作:
news_pool[it->id] = click_news_info;

在另一个线程中进行操作:
it = news_pool.find(news_id);

这样会不会出现问题?
...全文
4245 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
nevergone 2014-10-18
  • 打赏
  • 举报
回复
会出问题的。 上次我们项目组有人多线程未加锁使用std::map 最后出现的情况是占CPU 100% WINDBG分析了 发现是在枚举树节点的时候 死循环了。。。 如果LZ关心性能,可以考虑无锁的实现,像ppl\tbb 带的concurrent_hash_map等。
小竹z 2014-10-17
  • 打赏
  • 举报
回复
会,这种情况要使用线程同步技术
「已注销」 2014-10-16
  • 打赏
  • 举报
回复
引用 3 楼 jwj070524 的回复:
c++ stl 没有支持多线程,所以多线程操作map的话很可能会出现程序执行异常的情况发生,通常会段错误。如果多个线程只读map,那还好说,要是既有线程读map又有线程修改map,肯定会发生问题的,建议用锁解决。
那如果我只有一个线程在写,其他线程都是在读的话,也会出问题么?
jwj070524 2014-10-16
  • 打赏
  • 举报
回复
c++ stl 没有支持多线程,所以多线程操作map的话很可能会出现程序执行异常的情况发生,通常会段错误。如果多个线程只读map,那还好说,要是既有线程读map又有线程修改map,肯定会发生问题的,建议用锁解决。
「已注销」 2014-10-16
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
大概会出现什么问题呢?
赵4老师 2014-10-16
  • 打赏
  • 举报
回复
jwj070524 2014-10-16
  • 打赏
  • 举报
回复
引用 4 楼 wangbin19911213 的回复:
[quote=引用 3 楼 jwj070524 的回复:] c++ stl 没有支持多线程,所以多线程操作map的话很可能会出现程序执行异常的情况发生,通常会段错误。如果多个线程只读map,那还好说,要是既有线程读map又有线程修改map,肯定会发生问题的,建议用锁解决。
那如果我只有一个线程在写,其他线程都是在读的话,也会出问题么?[/quote] 大哥你知道读写锁吗,只要有一个线程在写,其他线程是绝对不能再操作map了,不管是读还是写。

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧