社区
C++ 语言
帖子详情
c++多线程操作list,出现偶发异常
qq_22229525
2019-03-15 03:54:14
c++多线程操作list,在该list.size()=0后,执行list.resize(0);出错了,该异常偶发,大多情况都运行正常……
...全文
453
9
打赏
收藏
c++多线程操作list,出现偶发异常
c++多线程操作list,在该list.size()=0后,执行list.resize(0);出错了,该异常偶发,大多情况都运行正常……
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yshuise
2019-07-01
打赏
举报
回复
你设计的get都有问题,是不能把引用传出,这回破坏加锁
636f6c696e
2019-07-01
打赏
举报
回复
STL都是非线程安全的,所有访问处都需要加锁,而不只是出错的地方
赵4老师
2019-07-01
打赏
举报
回复
多线程需要加锁。
qq_22229525
2019-06-29
打赏
举报
回复
是用了map,我现在另一个程序也出现了类似的问题,map的second是list,然后map的迭代器取出来值是对的,但是接着用list的迭代器取就是错的,然后程序就挂了…
一见
2019-04-02
打赏
举报
回复
引用 5 楼 一见 的回复:
好象不是出在list,用了map?
确实,看调用栈是嵌套的:std::map<std::string, std::pair<std::string, std::list<CEventINfo> > >
一见
2019-03-18
打赏
举报
回复
好象不是出在list,用了map?
老葱1#
2019-03-16
打赏
举报
回复
虽然不知 size() == 0, 调用 resize(0) 有啥意义, 但不应该出错。 只能怀疑是有其他线程没有加锁保护的情况下写入list。
sdghchj
2019-03-15
打赏
举报
回复
T是怎么定义的?
qq_22229525
2019-03-15
打赏
举报
回复
有加锁,代码如下
bool get(T &x)
{
m_lock.Lock();
if (m_listCache.size() == 0)
{
m_listCache.resize(0);
m_lock.UnLock();
return false;
}
else
{
x = m_listCache.back();
m_listCache.pop_back();
m_lock.UnLock();
return true;
}
}
core打印的栈如下:
#0 0x000000000063a7d7 in std::_List_const_iterator<CEventInfo>::operator== (
this=0x7f184ac05978, __x=...)
at /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_list.h:252
#1 0x000000000063b991 in std::distance<std::_List_const_iterator<CEventInfo> > (__first=
Traceback (most recent call last):
File "/usr/lib64/../share/gdb/python/libstdcxx/v6/printers.py", line 108, in to_string
return self.val['_M_node'].cast(nodetype).dereference()['_M_data']
RuntimeError: Cannot access memory at address 0x7463616e49707041
, __last=...)
at /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_iterator_base_funcs.h:118
#2 0x000000000063b9db in std::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::list<CEventInfo, std::allocator<CEventInfo> > >, std::_Select1st<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::list<CEventInfo, std::allocator<CEventInfo> > > >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::list<CEventInfo, std::allocator<CEventInfo> > > > >::_M_end (this=0x64872e)
at /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_tree.h:476
#3 0x000000000063ba0b in std::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::list<CEventInfo, std::allocator<CEventInfo> > >, std::_Select1st<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::list<CEventInfo, std::allocator<CEventInfo> > > >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::list<CEventInfo, std::allocator<CEventInfo> > > > >::_M_root (this=0xb08a)
at /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_tree.h:442
#4 0x000000000064a6c4 in TemplateMutexCatch<CEventInfo>::get (this=0x10c2498, x=...)
at ../../source/monbasic/./MonTools.h:995
smwhotjay
2019-03-15
打赏
举报
回复
多线程操作list 记得用临界锁。
C++
多线程
编程视频教程(
C++
11
多线程
并发)
线程与进程相比,它是一种花销小,切换快,更节俭的多任务的
操作
方式。多编程并发在企业中开发显得尤为重要,本课程包含Windows
多线程
编程与
C++
11高并发编程,通过浅显易懂的代码与讲解,让你的
多线程
编程能力得到质的飞跃,具备开发高并发代码的能力!
多线程
同时读写
操作
List
引发的
异常
问题
今天运行刚写的本地程序的时候发现
偶发
性的
出现
如下
异常
。 java.util.ConcurrentModificationException at java.util.Array
List
$Itr.checkForComodification(Array
List
.java:901) at java.util.Array
List
$Itr.next(Array
List
.java:851) at ys.manufacture.dip.etl.
list
ener.TaskLog
List
ener$1.run(Ta
多线程
下遇到空指针NullPointerException,下标越界ArrayIndexOutOfBoundsException 问题及解决办法
项目中遇到的问题。 1。
多线程
下偶尔会报 空指针NullPointerException
异常
。开始的时候怎么也想不明白为啥会报空指针,看代码每一步的数据我都有添加,怎么会集合有空指针呢?关键是控制台打印报错信息就只有这一个NullPointerException
异常
。 2。后来一步步拆解,追踪打印每一步数据。发现了新的报错:下标越界ArrayIndexOutOfBoundsExceptio...
C++
常见崩溃问题分析
一、前言 从事自动化测试平台开发的编程实践中,遭遇了几个程序崩溃问题,解决它们颇费了不少心思,解决过程中的曲折和彻夜的辗转反侧却历历在目,一直寻思写点东西,为这段难忘的经历留点纪念,总结惨痛的教训带来的经验,以期通过自己的经历为他人和自己带来福祉:写出更高质量的程序; 由于 C 和
C++
这两种语言血缘非常近,文本亦对 C 编程语言有借鉴作用; 二、
C++
崩溃分类 在编程实践中,遭遇到了诸如内...
Linux
多线程
服务端编程:使用muduo
C++
网络库 学习笔记 第六章 muduo网络库简介
2010年3月作者写了一篇《学之者生,用之者死——ACE历史与简评》(http://blog.csdn.net/Solstice/archive/2010/03/10/5364096.aspx,ACE是(Adaptive Communication Environment)是一个
C++
编写的开源框架,用于开发高性能、可伸缩、分布式系统的网络应用),其中提到了作者心目中理想的网络库的样子: 1.线程安全,原生支持多核
多线程
。 2.不考虑可移植性,不跨平台,只支持Linux,不支持Windows。 3.主要支持
C++ 语言
64,649
社区成员
250,477
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章