2011-08-13 57 views
18

我在this article中讀到,在Java中,允許嵌套同步塊。我知道Objective-C的synchronized塊看起來很像Java。所以我想知道:在Objective-C中允許嵌套塊嗎?是否在Objective-C中嵌套同步塊?

我也有一個方面的問題:是否有遞歸塊的實際限制?

謝謝您的快速回答!

回答

23

是的,他們是。從the docs(現已退役):

Objective-C同步功能支持遞歸和重入代碼。一個線程可以以遞歸方式多次使用單個信號量;其他線程被阻止使用它,直到線程釋放所有與它一起獲得的鎖;也就是說,每個@synchronized()塊通常或通過異常退出。

有關此方法和其他同步/鎖定方法的性能的討論,請參閱here

+0

該文檔鏈接已死亡。以下是「同步指南」的當前鏈接。 https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Multithreading/ThreadSafety/ThreadSafety.html#//apple_ref/doc/uid/10000057i-CH8-124887 – bkbeachlabs

+0

Thanks @bkbeachlabs。我已經更新了我的鏈接,指向他們以前的舊/歸檔版本。我不確定在哪裏可以找到這個「'@ synchronized'是可重入的」在當前文檔中的保證。 – jtbandes