知识点积累笔记---互斥锁

在多线程情况下:多个线程要访问同一块资源时,容易引发数据混乱出错 和线程安全等等问题。因此需要给线程加上互斥锁。

方式一:@synchronized互斥锁

//toke必须是全局唯一的  一般用self

//加锁后 会消耗一定的性能

//加锁后的结果:线程同步,多条线程按顺序地执行任务

@synchronized (<#token#>) {

<#statements#>

}

注意:锁定一份代码只用一把锁,多把锁是无效的

方式二:NSLock

lock,加锁

unlock,解锁

tryLock,尝试加锁,如果失败了,并不会阻塞线程,只是立即返回NO

NSLock: 使用注意,不能多次调用 lock方法,会造成死锁

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 锁是最常用的同步工具。一段代码段在同一个时间只能允许被有限个线程访问,比如一个线程 A 进入需要保护代码之前添加简...
    AidenRao阅读 21,601评论 28 160
  • 锁是一种同步机制,用于多线程环境中对资源访问的限制iOS中常见锁的性能对比图(摘自:ibireme): iOS锁的...
    LiLS阅读 1,566评论 0 6
  • 在平时的开发中经常使用到多线程,在使用多线程的过程中,难免会遇到资源竞争的问题,那我们怎么来避免出现这种问题那? ...
    IAMCJ阅读 3,155评论 2 25
  • 引用自多线程编程指南应用程序里面多个线程的存在引发了多个执行线程安全访问资源的潜在问题。两个线程同时修改同一资源有...
    Mitchell阅读 2,028评论 1 7
  • iOS线程安全的锁与性能对比 一、锁的基本使用方法 1.1、@synchronized 这是我们最熟悉的枷锁方式,...
    Jacky_Yang阅读 2,296评论 0 17