美文网首页
NSMutableArray怎么保证线程安全

NSMutableArray怎么保证线程安全

作者: Crazy2015 | 来源:发表于2017-08-30 19:30 被阅读85次

多线程去写NSMutableArray,可采用 NSLock 方式,
简单来说就是操作前 lock 操作执行完 unlock。
但注意,每个读写的地方都要保证用同一个 NSLock进行操作。

NSLock *arrayLock = [[NSLock alloc] init];
[...]
[arrayLock lock]; // NSMutableArray isn't thread-safe
[myMutableArray addObject:@"something"];
[myMutableArray removeObjectAtIndex:5];
[arrayLock unlock];

另一种方式是利用 GCD 的 concurrent queue 来实现,个人感觉更高效。

dispatch_queue_t concurrent_queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

For read:

  • (id)objectAtIndex:(NSUInteger)index {
    __block id obj;
    dispatch_sync(self.concurrent_queue, ^{
    obj = [self.searchResult objectAtIndex:index];
    });
    return obj;
    }

For insert:

  • (void)insertObject:(id)obj atIndex:(NSUInteger)index {
    dispatch_barrier_async(self.concurrent_queue, ^{
    [self.searchResult insertObject:obj atIndex:index];
    });
    }

For remove:

  • (void)removeObjectAtIndex:(NSUInteger)index {
    dispatch_barrier_async(self.concurrent_queue, ^{
    [self.searchResult removeObjectAtIndex:index];
    });
    }

转载:
https://stackoverflow.com/questions/12098011/is-objective-cs-nsmutablearray-thread-safe/17981941#17981941
https://hepinglaosan.github.io/2017/06/20/Thread-Safe-NSMutableArray/

http://blog.csdn.net/kongdeqin/article/details/53171189

https://juejin.im/entry/595ee8a76fb9a06bb47489ef

相关文章

  • NSMutableArray怎么保证线程安全

    多线程去写NSMutableArray,可采用 NSLock 方式,简单来说就是操作前 lock 操作执行完 un...

  • NSMutableArray 线程安全方案

    线程安全的NSMutableArray NSMutableArray本身是线程不安全的。多线程访问NSMutabl...

  • 多线程面试题2020-1

    1 NSArray是线程安全的吗?NSMutableArray是线程安全的吗?NSDictionary呢?NSCa...

  • NSMutableArray线程安全

    数组线程安全的思考 NSMutableArray是线程不安全的,当有多个线程同时对数组进行操作的时候可能导致崩溃或...

  • Nsmutablearray线程安全

    数组线程安全的思考NSMutableArray是线程不安全的,当有多个线程同时对数组进行操作的时候可能导致崩溃或数...

  • Thread-safe Container

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

  • 网络多线程

    怎么保证线程安全?只在主线程刷新UI。防止线程资源抢夺,要用@synchronized进行加锁保护。异步操作保证线...

  • iOS-线程安全NSMutableArray

    数组线程安全的思考 NSMutableArray是线程不安全的,当有多个线程同时对数组进行操作的时候可能导致崩溃或...

  • Java线程安全(volatile & synchron

    总结 volatile不能保证线程安全而synchronized可以保证线程安全。volatile只能保证被其修饰...

  • 面试总结

    1、数组和链表的区别和联系,他们是线程安全的吗 2、怎么保证线程安全: 线程安全的本质:当多个线程访问一个对象时,...

网友评论

      本文标题:NSMutableArray怎么保证线程安全

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