美文网首页
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中几种锁的简单介绍

    多线程编程可以充分利用多核CPU的性能,提供资源的利用率能够提高程序的运行效率,使程序响应更快。但同时也带来了一些...

  • 数据持久化

    iOS中几种数据持久化方案 Preference简单使用介绍

  • iOS各种锁简介(上)

    iOS各种锁简介(上) 本篇文章主要介绍iOS中几种不同的锁的实现方式,既然是简介,这里不会涉及到原理上面的东西,...

  • iOS 中常见的几种锁-代码示例

    iOS 中常见的几种锁-代码示例 iOS 中常见的几种锁-代码示例

  • iOS 笔记 - 锁

    今天简单写一下iOS中相关锁的内容,下图来自不再安全的 OSSpinLock中几种常见的锁加解锁的时间。 废弃的O...

  • iOS @synchronized的底层原理

    在 iOS 开发常见的几种锁[https://www.jianshu.com/p/91619bdfaf75] 介绍...

  • iOS 几种常用锁介绍

    NSLockNSLock是Cocoa提供给我们最基本的锁对象,这也是我们经常使用的,除lock和unlock外,N...

  • iOS中的锁(5)

    iOS中的锁(5) 本文主要介绍pthread和读写锁,以及自定义一个简单的读写锁。 1. pthread 1.1...

  • iOS中的几种锁

    多个线程访问同一块资源的时候,很容易引发数据混乱问题 所以我们就需要给我们的任务加上锁 网上大多的例子都是卖票的...

  • 线程锁

    iOS中有几种线程锁:@synchronized、NSLock以及NSRecursiveLock(递归锁)。本文用...

网友评论

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

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