1、iOS同步方案性能比较

性能由高到低排序如下:
image.png

2、自旋锁和互斥锁比较

自旋锁是使用while循环进行等待,以下情况使用自旋锁比较合适:
1、预计线程等待锁的时间很短(等待时间较短时,没必要进入休眠再唤醒)
2、加锁的代码(临界区)经常被调用,但竞争情况很少发生(经常调用,反复休眠、唤醒会比较消耗性能)
3、CPU资源不紧张(自旋锁比较耗性能,所以适合CPU资源不紧张的情况)
4、多核处理器(多核处理器CPU资源不会很紧张)

互斥锁是使用休眠的方式进行等待,以下情况使用互斥锁比较合适:
1、预计线程等待锁的时间较长(长时间等待使用自旋锁会消耗性能)
2、单核处理器(单核处理器CPU资源比较紧张)
3、临界区有IO操作(IO操比较占用CPU资源,避免使用自旋锁和IO抢CPU资源)
4、临界区代码复杂或者循环量大(等待时间长、CPU占用高)
5、临界区竞争非常激烈