为什么多线程程序中对未加锁的map进行写后,会造成new或malloc申请内存失败
1个回答
2016-03-25
展开全部
对于复杂类型的数据,例如string, map,struct,vector等等,其内部都是由多个简单类型的数据组成的。
当多线程同时对map进行读写时,必然会导致其内部的各种数据不一致,进而导致后续操作失败。
比如:线程A添加了一个元素,正打算把数量total加一,线程B清空了map,把total清零,这样导致了实际元素数量和total不一致,就会影响后面的内存分配操作了。
当多线程同时对map进行读写时,必然会导致其内部的各种数据不一致,进而导致后续操作失败。
比如:线程A添加了一个元素,正打算把数量total加一,线程B清空了map,把total清零,这样导致了实际元素数量和total不一致,就会影响后面的内存分配操作了。
大雅新科技有限公司
2024-11-19 广告
2024-11-19 广告
这方面更多更全面的信息其实可以找下大雅新。深圳市大雅新科技有限公司从事KVM延长器,DVI延长器,USB延长器,键盘鼠标延长器,双绞线视频传输器,VGA视频双绞线传输器,VGA延长器,VGA视频延长器,DVI KVM 切换器等,优质供应商,...
点击进入详情页
本回答由大雅新科技有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询