ios 多線程 面試

來源:互聯網
上載者:User

標籤:


1 多線程是什麼 同步完成多項任務,提高了資源的使用效率,從硬體、作業系統、應用軟體不同的角度去看,多線程被賦予不同的內涵,對於硬體,現在市面上多數的CPU都是多核的,多核的CPU運算多線程更為出色;從作業系統角度,是多任務,現在用的主流作業系統都是多任務的,可以一邊聽歌、一邊寫部落格;對於應用來說,多線程可以讓應用有更快的回應,可以在網路下載時,同時響應使用者的觸摸操作。在iOS應用中,對多線程最初的理解,就是並發,它的含義是原來先做燒水,再摘菜,再炒菜的工作,會變成燒水的同時去摘菜,最後去炒菜。 2 iOS 中的多線程 iOS中的多線程,是Cocoa架構下的多線程,通過Cocoa的封裝,可以讓我們更為方便的使用線程,做過C++的同學可能會對線程有更多的理解,比如線程的創立,訊號量、共用變數有認識,Cocoa架構下會方便很多,它對線程做了封裝,有些封裝,可以讓我們建立的對象,本身便擁有線程,也就是線程的對象化抽象,從而減少我們的工程,提供者的健壯性。 GCD是(Grand Central Dispatch) ,從系統層級提供的一個易用地多線程類庫,具有運行時的特點,能充分利用多核心硬體。GCD的API介面為C語言的函數,函數參數中多數有Block,關於Block的使用參看這裡,為我們提供強大的“介面”,對於GCD的使用參見本文  NSOperation與QueueNSOperation是一個抽象類別,它封裝了線程的細節實現,我們可以通過子類化該對象,加上NSQueue來同物件導向的思維,管理多線程程式。具體可參看這裡:一個基於NSOperation的多線程網路訪問的項目。   NSThreadNSThread是一個控制線程執行的對象,它不如NSOperation抽象,通過它我們可以方便的得到一個線程,並控制它。但NSThread的線程之間的並發控制,是需要我們自己來控制的,可以通過NSCondition實現。參看  iOS多線程編程之NSThread的使用  其他多線程在Cocoa的架構下,通知、Timer和非同步函數等都有使用多線程,(待補充).   3 iOS多線程常見面試題在項目什麼時候選擇使用GCD,什麼時候選擇NSOperation?項目中使用NSOperation的優點是NSOperation是對線程的高度抽象,在項目中使用它,會使項目的程式結構更好,子類化NSOperation的設計思路,是具有物件導向的優點(複用、封裝),使得實現是多線程支援,而介面簡單,建議在複雜項目中使用。項目中使用GCD的優點是GCD本身非常簡單、易用,對於不複雜的多線程操作,會節省代碼量,而Block參數的使用,會是代碼更為易讀,建議在簡單項目中使用。  

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.