美文网首页
iOS中的锁

iOS中的锁

作者: 豆豆哥哥 | 来源:发表于2020-07-28 22:19 被阅读0次

锁 - 主要作用是保证多线程访问资源安全

锁的种类:基本的锁就包括了三类 自旋锁 互斥锁 读写锁
其他的比如条件锁,递归锁,信号量都是上层的封装和实现

读写锁

写者是排他性的,一个读写锁同时只能有一个写者或多个读者(与CPU数相关),但不能同时
既有读者又有写者。在读写锁保持期间也是抢占失效的
读模式锁定时可以共享, 以写模式锁住时意味着独占, 所以读写锁又叫共享-独占锁

互斥锁 :

用于保证在任何时刻,都只能有一个线程访问该对象。 当获取锁操作失败时,线程会进入睡眠,等待锁释放时被唤醒
互斥锁,分为递归锁和非递归锁。

@synchronized (object)

有2个函数
A:objc_sync_enter
B:objc_sync_exit

若object == nil

@synchronized does noting

若object != nil

  • 递归锁 可以锁的重入
    在执行任务是 objc == nil 的时候 不会造成死锁
    1.存储节点
    2.哈希结构 - sync_list 表结构 1个个节点为 syncdate(data)
    3.递归锁
    总结:对互斥锁的一种形式的封装
    递归封装,里面是哈希表进行存储 --- 性能比较差
    好处是 只对object 锁1次,下次要锁的时候先查询有没有锁着有的话就不进行加锁了.

NSLock

不能递归的互斥锁的封装
不能重入

NSRecursiveLock

递归锁
可以重入

普通线程 - 安全 - NSLock
递归调用 NSRecursiveLock
递归调用外面 还有循环的创建线程的,会照成死锁

条件锁 NSCondition - 信号

生成者消费者模式
保证线程安全
lock锁住
unlock 解锁
保证消费等待生成
wait 等待
signal 生成一个

NSConditionLock
改变信号量

相关文章

  • OC--各种线程锁

    参考:正确使用多线程同步锁@synchronized()iOS中的锁iOS多线程安全详解iOS 常见知识点(三):...

  • ios开发中的各种锁机制

    ios开发中的各种锁机制

  • iOS锁系列-目录

    1、 iOS锁系列-NSLock对象锁2、iOS锁系列-NSConditionLock条件锁3、iOS锁系列-NS...

  • iOS 中的锁(4)

    iOS 中的锁(4) 不想篇幅太长,再开一篇继续探究iOS中的锁。 注:本文主要通过Objective-C语言进行...

  • iOS 中的锁(2)

    iOS 中的锁(2) 不想篇幅太长,再开一篇继续探究iOS中的锁。 注:本文主要通过Objective-C语言进行...

  • iOS 中的锁(3)

    iOS 中的锁(3) 不想篇幅太长,再开一篇继续探究iOS中的锁。 注:本文主要通过Objective-C语言进行...

  • iOS开发中的锁

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

  • iOS 多线程

    iOS中的各种锁iOS多线程到底不安全在哪里?

  • iOS中锁的分析

    iOS中锁的分析 ** @synchronized ** 递归互斥锁 // objc_sync_enter loc...

  • iOS中的锁

    iOS中的锁 前言 写在前面: 临界区:指的是一块对公共资源进行访问的代码,并非一种机制或是算法。 自旋锁:是用于...

网友评论

      本文标题:iOS中的锁

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