iOS線程加鎖

來源:互聯網
上載者:User

標籤:

// 加鎖

    @synchronized (self) {

        // 在同一時間,只能一個線程執行,但是很耗資源

        

    

    } // 解鎖

 

 

關於加鎖,這裡有一個東西.關於這個文法:@property.每次我們定義 一個屬性的時候,會首當其衝的寫上nonatomic,這是為什麼?請看下面解說:

nonatomic與atomic在@property中的不同:

都知道,這兩個關鍵字代表的是同一個東西,只是代表的含義不同.是與線程有關的.

  nonatomic代表的是:線程是不安全的.

  atomic代表的是:線程是安全的.

那麼,問題來了.安全與不安全的具體體現形式是什麼呢?其實就是是否給這個屬性的setter方法是否加鎖.

  nonatomic代表的是:沒有給這個屬性的setter方法加鎖,所以是不安全的.

  atomic代表的是:給這個屬性的setter方法加鎖,所以是安全的.

 

 

那麼,問題又來了.在我們的iOS開發中,為什麼要推薦使用nonatomic呢?

  這個問題要從資源的耗損說起.在iOS開發中,setter方法的調用是很頻繁的.給setter方法加鎖,是很耗資源的.所以在行動裝置上,盡量使用nonatomic.在mac開發中通常是使用atomic.當然,在不在乎資源,而在乎安全問題的話,使用atomic也是沒有問題的.

 

iOS線程加鎖

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.