我在Objective-C的@synchronized(obj) { ... }
指令的理解是,它本質上是一樣的lock(obj) { ... }
結構在C#中,即..爲什麼Objective-C中的@synchronized(self)不像鎖(這是C#中的)?
- 雙方創造一種局部的,匿名的互斥體綁在指定對象的
- 任何線程輸入
@synchronized
/lock
塊都必須在執行塊中的任何代碼之前獲取該互斥體(並且如果它已經保留,將在繼續之前等待獲取該互斥體)。
在C#中,使用lock(this)
強烈反對(見Why is lock(this) {...} bad?)爲例),主要是因爲你再有超過誰鎖住你的互斥或沒有控制的情況下(因爲別人可以用你的對象作爲一個互斥體) 。
我認爲這個概念也適用於@synchronized(self)
在Objective-C,但有人告訴我,由一位資深開發商在我的球隊是@synchronized
功能不同於lock
,並在上面SO後的擔憂並不適用。
我想我的問題是 - 我對@synchronized
有什麼誤解?爲什麼@synchronized(self)
安全lock(this)
不是?
謝謝。
這一點在[@synchronized()'](http://stackoverflow.com/a/29218157/603977)的舊帖子中引發。 –