美文网首页
iOS中几种锁的简单介绍

iOS中几种锁的简单介绍

作者: xukunluren | 来源:发表于2018-01-08 17:03 被阅读0次

    多线程编程可以充分利用多核CPU的性能,提供资源的利用率能够提高程序的运行效率,使程序响应更快。但同时也带来了一些弊端:资源的竞争,死锁等。多线程编程中,应该尽量避免资源在线程之间共享,以减少线程间的相互作用。 但是总是有多个线程相互干扰的情况(如多个线程访问一个资源)。在线程必须交互的情况下,就需要一些同步工具,来确保当它们交互的时候是安全的。

    锁是线程编程同步工具的基础。iOS开发中常用的锁有如下几种:

    @synchronized

    NSLock 对象锁

    NSRecursiveLock 递归锁

    NSConditionLock 条件锁

    pthread_mutex 互斥锁(C语言)

    dispatch_semaphore 信号量实现加锁(GCD)

    OSSpinLock

    @synchronized 关键字加锁 互斥锁,性能较差不推荐使用**

    ** NSLock 互斥锁 不能多次调用 lock方法,会造成死锁**

    在Cocoa程序中NSLock中实现了一个简单的互斥锁。

    所有锁(包括NSLock)的接口实际上都是通过NSLocking协议定义的,它定义了lock和unlock方法。你使用这些方法来获取和释放该锁。

    NSLock类还增加了tryLock和lockBeforeDate:方法。

    tryLock试图获取一个锁,但是如果锁不可用的时候,它不会阻塞线程,相反,它只是返回NO。

    lockBeforeDate:方法试图获取一个锁,但是如果锁没有在规定的时间内被获得,它会让线程从阻塞状态变为非阻塞状态(或者返回NO)。

    dispatch_semaphore 信号量实现加锁

    GCD中也已经提供了一种信号机制,使用它我们也可以来构建一把”锁”

    相关文章

      网友评论

          本文标题:iOS中几种锁的简单介绍

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