锁
来源:互联网 发布:知乎武汉船用机械 编辑:程序博客网 时间:2024/05/04 09:14
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 0