美文网首页
iOS 中常用的锁

iOS 中常用的锁

作者: EngineerPan | 来源:发表于2020-04-03 19:35 被阅读0次
  • 互斥锁(Mutex lock)
    互斥锁充当资源周围的保护性屏障。 互斥锁是一种信号量,它一次只能授予对一个线程的访问权限。 如果正在使用互斥锁,而另一个线程试图获取该互斥锁,则该线程将阻塞,直到该互斥锁被其原始持有者释放为止。 如果多个线程竞争同一个互斥锁,则一次只能访问一个。

  • 递归锁(Recursive lock)
    递归锁是互斥锁的一种变体。 递归锁允许单个线程在释放它之前多次获取该锁。 其他线程将保持阻塞状态,直到锁的所有者以获取锁的相同次数释放锁。 递归锁主要在递归迭代期间使用,但也可能用于每种方法都需要分别获取锁的情况。

  • 读写锁(Read-write lock)
    读写锁也称为共享独占锁。 这种类型的锁通常用于较大规模的操作,如果频繁读取受保护的数据结构并且仅偶尔进行修改,则可以显着提高性能。 在正常操作期间,多个读取器可以同时访问数据结构。 但是,当线程要写入结构时,它将阻塞,直到所有读取器都释放锁为止,此时,它获取了锁并可以更新结构。 当写入线程正在等待锁定时,新的读取器线程将阻塞,直到写入线程完成。 系统仅支持使用POSIX线程的读写锁。

  • 分布式锁(Distributed lock)
    分布式锁在进程级别提供互斥访问。 与真正的互斥锁不同,分布式锁不会阻止进程或阻止其运行。 它仅报告锁繁忙的时间,并让进程决定如何进行。

  • 自旋锁(Spin lock)
    自旋锁反复轮询其锁定条件,直到该条件变为true。 自旋锁最常用于锁的预期等待时间较短的多处理器系统上。 在这些情况下,轮询通常比阻塞线程更有效,这涉及到上下文切换和线程数据结构的更新。 由于其轮询性质,该系统不提供自旋锁的任何实现,但是您可以在特定情况下轻松实现它们。

  • 双重检查锁(Double-checked lock)
    双重检查锁是通过在获取锁之前测试锁定条件来减少获取锁的开销的尝试。 由于双重检查的锁可能不安全,因此系统不会为它们提供明确的支持,因此不建议使用它们。

相关文章

  • iOS 中常见的几种锁介绍-示例

    常用的各类锁性能比较 文中Demo 均实现在 XWInterviewDemos 1. iOS中的互斥锁 在编程中,...

  • iOS中的锁笔记

    本文只是我对iOS中锁的学习笔记,没有太深入的研究讲解。先来一张ios中常用锁的性能对照图 锁的分类 自旋锁:在未...

  • iOS-锁

    iOS开发中知道的哪些锁? 哪个性能最差? 锁是线程编程同步工具的基础。iOS开发中常用的锁有如下几种: @syn...

  • iOS开发中常用的锁

    锁是线程编程同步工具的基础,在iOS开发中常用的锁有以下几种: @synchronized NSLock 对象锁 ...

  • ios中常用的锁

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

  • 线程锁

    谈下iOS开发中知道的哪些锁? 哪个性能最差?SD和AFN使用的哪个? ⼀般开发中你最常用哪个? 哪个锁apple...

  • 好文章

    编写第一个 LLDB 脚本常用的设计模式有哪些iOS动画暂停与恢复的理解Swift 5.3 新特性iOS中的锁文章...

  • iOS 常用锁

    信号量dispatch_semaphore 【塞莫佛】 在多线程环境下用来确保代码不会被并发调用。在进入一段代码前...

  • iOS 中几种常用的锁总结

    多线程编程中,应该尽量避免资源在线程之间共享,以减少线程间的相互作用。 但是总是有多个线程相互干扰的情况(如多...

  • 1、谈下iOS开发中知道的哪些锁? 哪个性能最差?SD和AFN使

    1、谈下iOS开发中知道的哪些锁? 哪个性能最差?SD和AFN使用的哪个? 一般开发中你最常用哪个? 哪个锁app...

网友评论

      本文标题:iOS 中常用的锁

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