【iOS开发】iOS开发中的锁

官方文档笔记
疑问:
1、NSLock与NSRecursiveLock 有什么区别?
NSRecursiveLock 指的是什么。递归锁。
在如果一个线程对NSLock进行了两次lock操作,这个线程会被永久锁住;NSRecursiveLock可以执行多次lock,但是必须要有对应次数的unlock 与其对应。

2、POSIX threads 是什么?
pthread 表示 POSIX thread,定义了一组跨平台的线程相关的 API

3、锁的本质是什么?
4、NSRecursiveLock的使用场景?

(一) NSLock
1、NSLock 是通过POSIX threads来实现的。所以lock 和unlock 方法必须在同一个线程中调用,否则会出现不可以预知的行为。

2、不要用这个类来实现一个递归锁。原文:You should not use this class to implement a recursive lock.

3、在同一个线程上调用两次 lock 方法会永久锁住此线程。Calling the lock method twice on the same thread will lock up your thread permanently.

4、Unlock 一个没有被locked 的锁,会在控制台打印出来。

lock: 尝试获取一个锁,会阻塞当前线程直到获得锁成功。
unlock: 放弃前面获取到的锁
lockBeforeDate: 在给定时间之前尝试获取一个锁,会返回一个bool值来指明是已经获取到锁。我的理解是在给定时间之前且没有获取到锁时,会阻塞当前线程;获取到锁或超过给定时间,不会再阻塞当前线程,当前线程会继续向下执行。

tryLock: 尝试获取锁,并立即给出尝试的结果。对比LockBeforeDate,相当于只尝试一次,而前者会尝试直到一个时间点。

(二)NSRecursiveLock

网络上学习:
参考文章:
iOS中的各种锁
深入理解iOS开发中的各种锁

你可能感兴趣的:(【iOS开发】iOS开发中的锁)