Objective-C中是否允许嵌套的同步块?

Con*_*has 20 java recursion multithreading objective-c

我在本文中读到,在Java中,允许使用嵌套的synchronized块.我知道Objective-C的synchronized块看起来很像Java.所以我想知道:Objective-C中是否允许嵌套块?

我还有一个侧面问题:递归块有实际限制吗?

谢谢你的快速回答!

jtb*_*des 27

对,他们是.从文档(现已退休):

Objective-C同步功能支持递归和可重入代码.线程可以以递归方式多次使用单个信号量; 阻止其他线程使用它,直到线程释放用它获得的所有锁; 也就是说,每个@synchronized()块都会正常退出或通过异常退出.

有关使用此方法和其他同步/锁定方法的性能的讨论,请参见此处.