为什么多线程程序中对未加锁的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不一致,就会影响后面的内存分配操作了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询