http://bbs.csdn.net/topics/50362435
.
这篇文章的作者在不同线程中访问stl string的不同实例,遭遇了线程冲突。根据文中说法,是否可以这样理解:一旦多线程中某个操作会导致string实例发生空间分配,即使这些线程不是访问的同一个实例,也必须在操作时加上线程锁?
.
另,这篇文章的回复中,有人提到"vc6的stl不支持多线程"。那如果使用较新编译平台实现的stl,例如vs2013,是否还需要考虑这个问题?
.
之前写的多线程程序中使用过stl string,如果全部修改,代价会比较高。由于我找到的描述这个问题的文章日期基本都很老,所以希望知道,是否可以不修改。
关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率

首页/
已采纳
关于C++ stl string的线程安全性问题
收起
- 写回答
- 好问题 0 提建议
- 关注问题
微信扫一扫
点击复制链接分享
- 邀请回答
- 编辑 收藏 删除 结题
- 收藏 举报
1条回答 默认 最新
- 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
mamutu02 2016-08-09 08:58关注本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
编辑预览轻敲空格完成输入- 显示为
- 卡片
- 标题
- 链接
评论按下Enter换行,Ctrl+Enter发表内容
编辑
预览

轻敲空格完成输入
- 显示为
- 卡片
- 标题
- 链接
报告相同问题?
提交
- 2022-09-13 16:44回答 2 已采纳 sMyPlayerTirggerData被定义成一个宏,其扩展为MyPlayerTirggerData::instance(),而MyPlayerTirggerData::instance()是一个静
- 2022-03-18 15:15回答 1 已采纳 达不到想要的效果是因为你实例化的std::unordered_set不满足UnorderedAssociativeContainer的约束条件:其中一条是如果两个键值相等,那么它们的哈希值也相等。 你
- 2018-02-18 02:08回答 2 已采纳 首先遇到这类问题,你应该去看看 vector 的实现代码。这类问题你可以直接断点进去push_back里面看看代码实现。 我大致说一下,你这里出现的问题,无非就是一个:vector要存的大小发生了改
- 2021-01-30 01:53吴双无敌的博客 众所周知,STL容器不是线程安全的。对于vector,即使写方(生产者)是单线程写入,但是并发读的时候,由于潜在的内存重新申请和对象复制问题,会导致读方(消费者)的迭代器失效。实际表现也就是招致了core dump。另外一...
- 2018-08-17 22:26回答 3 已采纳 刚我试了一下,二维数组的首地址和二级指针确实有区别。 m_map = new stNode*[m_mapSize][NULL];改为 m_map = new stNode*[m_mapSize];
- 2022-02-14 17:47回答 3 已采纳 用了size_t, ssize_t, size_type等类型,一般是不同的库针对自己封装的,而定义的类型名。具体占用多少bit,取决于不同的机器和实现。不是特别关心占用位数情况下,直接使用就可以了。
- 2021-06-16 03:55回答 1 已采纳 操作符重载函数修改一下就可以了,代码如下: if (a1.wgrade == a2.wgrade) { return a1.number > a2.number; }else retur
- 2024-11-10 08:51ღ 噫吁嚱的博客 在C++中,std::vector通常并不是线程安全的,因此在多线程环境中对std::vector进行读写操作可能会导致未定义行为。可以发现,有些_threadname没有打印出来,有些打印出来了,因为加了sleep的原因,这个现象还是比较...
- 2022-06-05 06:43回答 2 已采纳 三种输出方式写在一个代码里了,有注释.下面是输入后,通过3种方式输出的截图: 代码如下; #include <iostream> #include <vector> #inc
- 2022-04-25 03:27回答 1 已采纳 你的意思应该是不能使用mutex,而必须使用 shared_mutex吧?这个很好解释,因为mutex是不允许复制的。
- 2022-02-11 15:11回答 1 已采纳 _First, _Last, _UFirst, _ULast都是迭代器这是函数模板,具体的参数类型根据传入参数类型来确定。比如,如果第三个参数传入的是函数名,那么_Pred就是指向这个函数的函数指针;
- 2014-08-01 08:31灰灰渔渔爱吃鱼的博客 除了shared_ptr指向的对象和iostream对象外,STL的对象在多线程环境下使用都有可能出现安全问题。 因此,多线程环境下,为保证安全性应坚持以下使用规则: 1、多个线程可以同时读同一个对象A; 2、当对象A被线程1...
- 2021-06-18 03:16踏莎行hyx的博客 用C++写的程序,如果用到了自带的标准模板库STL,在多线程访问的时候如果不加锁很容易造成segment fault导致程序崩溃coredump,这个问题是C++语言开发挥之不去的meng'yan
- 2023-05-17 01:18王_可的博客 需要注意的是,即使STL容器本身是线程安全的,但在多线程环境下使用时,仍需要注意对迭代器的操作可能会引起容器的线程安全问题。如 map,set,unordered_map,unordered_set)和无序容器(如 unordered_map,...
- 2023-11-05 13:56忆梦初心的博客 STL(standard template libaray - 标准模板库)是C++标准库的重要组成部分。其不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。本期我们将要来学习一下STL中的string类,对比一下string和我们...
- 没有解决我的问题, 去提问
联系我们(工作时间:8:30-22:00)
400-660-0108kefu@csdn.net在线客服
- 京ICP备19004658号
- 经营性网站备案信息
公安备案号11010502030143
- 营业执照
- 北京互联网违法和不良信息举报中心
- 家长监护
- 中国互联网举报中心
- 网络110报警服务
- Chrome商店下载
- 账号管理规范
- 版权与免责声明
- 版权申诉
- 出版物许可证
- ©1999-2025北京创新乐知网络技术有限公司