上次百度面试,对方问了一个锁你都用过哪些?
由于才疏学浅,我只说了两个,一个NSLock 还有一个是@synchronized.
回来看文档才知道原来有好多种,下面一一介绍下
- @synchronized():这玩意是对括号内的内容进行加锁,保证线程安全,一般用在伪单例的使用中
- NSLock:顾名思义,就是一个简单的锁,通过alloc创建后使用,具备lock,unlock以及lockBeforeDate方法.其中最后一个方法表示在指定时间之前。
- NSConditionLock:条件锁,指具备某些条件才生效的锁,具备方法如下,lockWhenCondition,unlockWithCondition,lockBeforeDate,lockWhenCondition:beforeDate.特别注意其中条件的类型是NSInteger
- NSRecursiveLock:递归锁,指为了解决存在递归中的锁而设立的,保证了在递归中不会引起死锁,多次调用不会阻塞已获取该锁的线程。具备的是基本锁的方法