學習 iOS多線程開發 Demo示意

來源:互聯網
上載者:User

標籤:style   blog   c   http   width   get   

  並發所描述的概念就是同時運行多個任務。這些任務可能是以在單核 CPU 上分時(時間分享)的形式同時運行,也可能是在多核 CPU 上以真正的並行方式來運行。這篇文章是作者在學習iOS開發技術當中,遇到多線程問題時捋順思路時的一些看法。

  GCD是iOS開發當中解決多核開發的一個技術。

  主要有三種隊列:一、運行在主線程的 Main queque   通過dispatch_get_main_queque 來擷取

          二、並行隊列 global dispatch queque ,通過dispatch_get_global_queque 擷取。並行隊列的優先順序 有 high ,default , low。

          三、串列隊列 serial queues一般用於按順序同步訪問,可建立任意數量的串列隊列,各個串列隊列之間是並發的。當想要任務按照某一個特定            的順序執行時,串列隊列是很有用的。串列隊列在同一個時間只執行一個任務。我們可以使用串列隊列代替鎖去保護共用的資料。和鎖不             同,一個串列隊列可以保證任務在一個可預知的順序下執行。

            serial queues通過dispatch_queue_create建立,可以使用函數dispatch_retain和dispatch_release去增加或者減少引用計數。

          

  

 

 

 一:問題描述: 取一段字串,將其全部轉換成大寫 ,然後計算該字串的長度以及替換部分字元。Demo的目的是:求得多線程技術能減少具體的已耗用時間是多少,展現正確使用多線程技術能極大提高代碼執行效率。

 

二:問題分析: 首先要擷取一段字串,這個任務應該是最先完成的。將該字串全部轉換成大寫,計算長度,替換相關位置 三個動作是互不相關的  。因此前後兩者有循序關聯性 應做成串列隊列  ,三個動作分成並行隊列。 

三:測試結果對比:

圖1 (使用GCD技術)                                                                                           

 

 

圖2(未使用GCD)

 

 

首先將兩種不同方法(多線程與非多線程)所花費的時間進行比較 :圖1使用GCD技術實現Demo花費時間   :  圖2使用非GCD技術實現Demo花費時間  = 1:10 。

由此一小段代碼前後已耗用時間的恐怖差別,對多線程提高代碼執行效率可見一斑。

 

 

圖3(GCD)

 

注意:1,block塊變數的範圍範圍 

   2,分組的三個動作 處理的對象都是fetchData ,這一點必須把握清楚。並行隊列裡是隨機執行的,因此將三個動作(轉換大寫,計算長度,替換字元)放在同一組當中,不見得先執行第一個 ,

   在測試Demo的時候,因為是先寫的非GCD情況  當重構代碼的時候 ,我並沒有將兩個(計算長度 替換字元)方法處理的對象從handleData(轉換大寫)改fetchData(資料),也就說並沒有完全理解 並列隊列的執行順序  以為也會是順序執行  三個同一層級的有兩個是依賴第一個的處理結果  ,出現了邏輯上的錯誤。

    3,整個頁面的重新整理顯示 ,應該是放在主線程中進行。  

 

 圖4(非GCD)

 註: 基本的順序執行。 

 

//以上內容有參照 http://objccn.io/issue-2-1/    

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.