iOS @synchronized關鍵字 線程保護鎖作用

這個東西其實就是 一個加鎖。如果self 其他線程訪問,則會阻塞。這樣做一般是用來對單例 進行一個死鎖的保護


@synchronized(self) {

//something like this

   kGoableValue = _shareInstance;

}


一、當兩個併發線程訪問同一個對象object中的這個synchronized(self)同步代碼塊時,一個時間內只能有一個線程得到執行。另一個線程必須等待當前線程執行完這個代碼塊以後才能執行該代碼塊。

  二、當一個線程訪問object的一個synchronized(self)同步代碼塊時,其他線程對object中所有其它synchronized(self)同步代碼塊的訪問將被阻塞。
  三、然而,當一個線程訪問object的一個synchronized(self)同步代碼塊時,另一個線程仍然可以訪問該object中的除synchronized(this)同步代碼塊以外的部分。
  四、第三個例子同樣適用其它同步代碼塊。也就是說,當一個線程訪問object的一個synchronized(this)同步代碼塊時,它就獲得了這個object的對象鎖。結果,其它線程對該object對象所有同步代碼部分的訪問都被暫時阻塞。
  五、以上規則對其它對象鎖同樣適用
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章