锁的本质就是在资源的入口加个标志,当多个线程访问资源的入口时,你再一次对其加锁就会判断该锁是否已经打开。从而达到阻射该线程继续执行。何为资源,在程序里,对象以及函数都是一个资源。
在iOS中最常用的加锁方式有NSLock 以及@synchronized。NSLock对象锁,使用方法在需要的地方创建对象并加锁,多个线程加锁时 该锁会检测是否为为锁状态 如果已经加锁了 那么就会阻碍该线程。说得有点乱,不太会写文章,也就是说锁对象就是一个资源,你再一次加锁就会检测这个资源是否已经锁住了 如果锁住了那么加锁时就会等待 直到该锁unlock 这时才会加上,从而达到了阻碍后面的代码执行
@synchronized 直接对某个对象加锁