synchronized 关键字来加锁的最大好处就是写起来非常方便,但是锁的性能分析文章都说它是性能最差的。
整体结构如下:
synchronized 的进出方法
通过断点汇编,可以看到大括号会变成两个函数:objc_sync_enter
和 objc_sync_exit
:
进入的方法是
1 | // Begin synchronizing on 'obj'. |
这里可以看到,如果传递的对象为空的时候,什么都不会执行。
核心的处理方法就是在data的方法里面,进行map来取对象的锁,以及对于锁的次数进行++ –的操作,所以它是一个可以重入的锁。
- Post link: http://yangzai360.top/2020/11/22/OC_GCD_03_synchronized/
- Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.