stl list 提供了丰富的功能 push_back ,遍历等功能
想问下,如果一个,stl有没有提供互斥保护的功能 ,如果某个线程正在 删除某一个list元素,而另外一个线程 往list 添加元素会不会导致不可预知错误? 实际多线程编程中有没有必要 加入互斥保护? 请各位高手回答。
收起
当前问题酬金
¥ 0 (可追加 ¥500)
支付方式
扫码支付
支付金额 15 元
提供问题酬金的用户不参与问题酬金结算和分配
支付即为同意 《付费问题酬金结算规则》
用两个list 交换使用 只需要保护,交换 list 的动作,保证交换的是完整的list,而不是正在使用到一半的list(不是已经读写了该list,而是已经使用完毕了)就可以了
stl 容器一般都是没有加锁的,不然stl还得需要知道具体的平台,因为不同平台锁的api不一样 所有stl 容器对应多线程来说 都是没加锁的,要支持多线程,应该自己添加mutex
http://blog.csdn.net/zdl1016/article/details/4161427
1)在每次调用容器的成员函数期间都要锁定该容器。 2)在每个容器返回的迭代器(例如通过调用begin或end)的生存期之内都要锁定该容器。 3)在每个在容器上调用的算法执行期间锁定该容器。
要的,stl非线程安全
如果是多线程编程的话一定是要加锁的,防止一个线程正在删除容器列表的节点,另外一个在访问某个元素时内存地址异常导致崩溃
报告相同问题?
程序员都在用的中文IT技术交流社区
专业的中文 IT 技术社区,与千万技术人共成长
关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!