NSLock(互斥锁)

@interface NSLock : NSObject

@protocol NSLocking
//上锁
- (void)lock;
//解锁
- (void)unlock;

@end
互斥锁:    (1)用于给某一段代码加锁,如果在某个线程中被上锁,在另外线程中就无法同时访问被上锁的一段代码。需要等待上锁的线程解锁后才能进行继续操作。
        (2)被互斥锁上锁的代码,只允许一个线程进行操作,其他线程需要等待解锁。
优点: 保证了程序的安全性  数据的同步性
缺点: 降低程序运行效率,延长操作时间
提高互斥锁性能:    将和数据操作无关的代码尽量放到锁外面,尽量给小范围代码上锁    

@synchronized(同步锁)

        @synchronized(<#token#>) {
            <#statements#>
        }
        //保持数据同步,原理和互斥锁相同
        //<#token#> 可用任意一个对象作为参数,同一个对象作为参数的两个代码块视为同一把锁

NSRecursiveLock(递归锁)

@interface NSRecursiveLock : NSObject

1   在递归函数中使用
    在递归的过程中需访问公共资源全局变量)
    需要上锁,防止数据不同步
2   可多次上锁,需相同次解锁才能释放锁住的代码
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值