美文网首页
关于NSMutableDictionary线程安全

关于NSMutableDictionary线程安全

作者: 小马过海 | 来源:发表于2021-07-28 23:01 被阅读0次

我们都知道,NSMutableDictionary是线程不安全的。

NSMutableDictionary线程不安全会崩溃,之前认为不安全原因主要是因为一个对象去设置一个值,另外一个线程同时去设置,可能会导致值对象内存重复释放。

按着这个思路,今天在一个多线程不会同时去设置同一个key时,发现一样也会崩溃。比较纳闷。

网上搜了一下,有提到线程不安全确认不仅和内存重复释放这方面有关,还有可能访问到垃圾内存,但没说具体原因。

细想一下,会不会是字典扩容呢。

对,如果是字典扩容的时候,多线程访问很有可能访问到垃圾内存。

然后做了个测试,初始化不同的capacity,发现50个线程设置了100个capacity的时候,确实没有再出现崩溃了。

知道了崩溃的原因,其实像有些情况如果知道大概NSMutableDictionary用的情景,如果追求高效率,设置一个合适的capacity,也未尝不可以在多线程中不使用锁直接使用哈

相关文章

  • 关于NSMutableDictionary线程安全

    我们都知道,NSMutableDictionary是线程不安全的。 NSMutableDictionary线程不安...

  • 线程安全的NSMutableDictionary

    NSDictionary是线程安全的,NSMutableDictionary是线程不安全的。利用锁来保证线程的安全...

  • Thread-safe Container

    系统的NSMutableArray,NSMutableDictionary,NSMutableSet都是线程不安全...

  • 缓存-YYCache

    参考文档 NSCache NSCache 与 NSMutableDictionary 用法相似,但是线程安全的,不...

  • iOS23-线程安全之NSMutableDictionary和N

    “线程安全”:即多条线程可以安全的访问同一数据,不会引起崩溃和数据错误 那为什么会造成这一问题呢?那就要说到咱们的...

  • 关于线程安全

    学习笔记,仅供自己参考,如有不对欢迎指正 1.关于内存模型 CPU高速缓存:因为CPU的执行速度要大于内存的读写速...

  • 面试总结

    关于自我介绍好好弄一弄!!!! 为什么在主线程更新UI? 主要原因还是为了线程的安全,但是UIkit的线程不是安全...

  • 【iOS开发】数组的线程安全

    参考文章:关于数组线程安全问题ios多线程同时访问数组问题Cocoa中的线程安全类 参考上面的文章,基本上有2种方...

  • Java 多线程 - CAS

    前言 记录在学习线程安全知识点中,关于CAS的有关知识点。 线程安全是指:多个线程不管以何种方式访问某个类,并且在...

  • Java 面试系列:线程安全之 synchronized 和 R

    前面我们介绍了很多关于多线程的内容,在多线程中有一个很重要的课题需要我们攻克,那就是线程安全问题。线程安全问题指的...

网友评论

      本文标题:关于NSMutableDictionary线程安全

      本文链接:https://www.haomeiwen.com/subject/lvmtvltx.html