美文网首页知识点总结
iOS 开发中用到的锁

iOS 开发中用到的锁

作者: 飞不越疯人院 | 来源:发表于2019-04-24 16:16 被阅读0次

开发中可能用过的锁

1. @synchronized()

作用是创建一个互斥锁; @synchronized(OC对象,一般用self) { //code }创建一个互斥锁保护对象确保同时只有一个线程在操作它;
能有效防止多线程抢夺资源造成的数据安全问题;但是会耗费大量CPU资源;

///如果不对getter方法加上@synchronized锁, 程序无法运行;
- (void)synchronizedLockCase {
    for (int i = 0; i < 5; i ++) {
        dispatch_async(dispatch_get_global_queue(0, 0), ^{
            if (i % 2==0) {
                [self.dataArr addObject:@"ABC"];
            }else {
                [self.dataArr addObject:@"EFG"];
            }
            NSLog(@"%@___", [NSThread currentThread]);
        });
    }

}

#pragma mark    getter
- (NSMutableArray *)dataArr {
    @synchronized (self) {
        if (!_dataArr) {
            _dataArr = [NSMutableArray arrayWithCapacity:0];
        }
        return  _dataArr;
    }
}
2. NSLock

遵循 NSLocking 协议;同一线程不能多次调用lock方法,否则会死锁;

#加锁
- (void)lock;
#解锁
- (void)unlock;
#不阻塞线程尝试加锁, 能成功返回YES, 否则返回NO
- (BOOL)tryLock;
#阻塞线程在指定的时间前尝试加锁, 成功返回YES, 否则返回NO;
- (BOOL)lockBeforeDate:(NSDate *)limit;

文中示例代码

相关文章

  • ios开发中的各种锁机制

    ios开发中的各种锁机制

  • iOS 开发中用到的锁

    开发中可能用过的锁 1. @synchronized() 作用是创建一个互斥锁; @synchronized(OC...

  • ios中常用的锁

    ios中常用的锁 为什么要用到锁?锁是什么 在平时的开发过程中,为了提升我们应用程序的运行效率,性能,我们会经常使...

  • iOS开发中的锁

    iOS开发中的锁 本人对锁没有深入理解,只是看了几篇文章,在这里做一下简单的总结。 iOS开发中,锁是用来解决线程...

  • iOS-OC底层-@synchronized分析

    前言 锁,在我们的iOS开发中还是经常用到的,特别是在一些多线程的安全访问方面提供了提供了便捷的方案。锁,分为自旋...

  • 【iOS开发】iOS开发中的锁

    官方文档笔记疑问:1、NSLock与NSRecursiveLock 有什么区别?NSRecursiveLock 指...

  • [转]深入理解 iOS 开发中的锁

    转自(https://bestswifter.com/ios-lock/#) 深入理解 iOS 开发中的锁 摘要 ...

  • iOS知识整理(一)

    最近的iOS的一些知识进行复习,基本都是一些 blog iOS的各种锁 深入理解 iOS 开发中的锁 Objc_m...

  • iOS开发中的锁

    iOS 开发中的

  • iOS开发中的锁

    前言 在多线程开发中,常会遇到多个线程访问修改数据。为了防止数据不一致或数据污染,通常采用加锁机制来保证线程安全。...

网友评论

    本文标题:iOS 开发中用到的锁

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