解决线程中的数据被外部修改导致程序崩溃问题
来源:互联网 发布:周杰伦 四面楚歌 知乎 编辑:程序博客网 时间:2024/05/01 17:06
线程中
while(flag){
for(i = bankList.begin(); i != bankList.end(); i++){
...............
}
}
由于功能需要,要在线程外部对bankList进行增删处理,直接修改会导致程序崩溃。
原因应该是程序处于for循环中,控制循环的变量被修改了。
提示:
QObject::killTimers: timers cannot be stopped from another thread
解决此问题可以采用互斥量,但这样做失去了使用线程的意义。
采用这个办法:
while(flag){
tmpList = bankList;
for(i = tmpList.begin(); i != tmpList.end(); i++){...............
}
}
使用一个临时变量tmpList控制循环,for循环期间,tmpList不会被改变。for循环结束后,tmpList被赋予新值,按新值运行。
如果想在bankList被修改后立即按修改后的值运行,可以在for循环中设置标记使其立即结束并按新值运行
for(i = tmpList.begin(); flag and (i != tmpList.end()); i++){
..............
}
如果程序运行过程中在for循环中还要对bankList进行修改则可以只在这部分使用互斥量(当然不能进行增删处理)
- 解决线程中的数据被外部修改导致程序崩溃问题
- 【已解决】onCreateViewHolder中的代码错误,导致程序崩溃
- ACE spawn() 产生线程导致程序崩溃
- vector小问题导致程序崩溃
- findContours导致MFC程序崩溃的问题
- WriteFile导致程序崩溃的问题
- MFC中GDI超过9999导致程序崩溃问题的解决
- WebView导致程序崩溃!!!
- 多线程导致程序崩溃
- vc2010使用CMFCEditBrowseCtrl控件导致程序退出崩溃解决
- 【已解决】Android 6.0权限设置,导致程序崩溃
- 解决curl超时导致应用崩溃的问题
- 怎样解决FineReader导致Office崩溃的问题
- 解决curl超时导致应用崩溃的问题
- 解决三星手机拍照旋转导致崩溃的问题
- 摄像头权限被拒绝导致程序崩溃的问题(6.0以下版本)
- android 异步弹出窗口 导致程序崩溃的问题
- UIActionSheet buttonTitleAtIndex 方法导致程序崩溃的问题
- LeetCode: Merge Intervals
- Hadoop入门
- 下一代信息推荐系统的算法设计与性能评估
- shell语法
- Android仿QQ主界面-------完善篇
- 解决线程中的数据被外部修改导致程序崩溃问题
- [Leetcode] Gray Code
- 简单配色方案web
- QWebView的setContent中文乱码问题
- const用法详解
- C#程序设计入门与实例代码
- bee
- 我的编译文件
- html5相关